Skip to content

Stub tenon corner

joints.stub_tenon_corner

A frame corner with a stub tenon: shoulders on the faces and the outer edge only.

On the inner edge the tenon is flush with the rail, with no shoulder; on the outer edge a plain shoulder sets the mortise back from the end of the stile, so it stays closed there. No haunch. Blind, two thirds of the stile wide. Compare haunched_stub_tenon_corner and haunched_mortise_tenon_corner, same stock and tenon length.

Stub tenon corner, assembled

Stub tenon corner, exploded

Parameters

Parameter Default
stile_length 300
rail_length 200
width 60
tenon_length 40
outer_shoulder 15
stock 20 mm board, oak

Change them in a design file (see Change an example):

from woodwright.examples import joints

design = joints.stub_tenon_corner(stile_length=375)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Rail

rail

Stile

stile

Cut list

stile  300 x 60 x 20 mm  oak
       - mortise 45 x 8 mm, 42 deep, in back_edge
rail   240 x 60 x 20 mm  oak
       - tenon 45 x 8 mm, 40 long, on left_end

Code

From woodwright/examples/joints.py, which imports the names it uses (see From an example to your own design):

def stub_tenon_corner(
    stile_length: float = 300,
    rail_length: float = 200,
    width: float = 60,
    tenon_length: float = 40,
    outer_shoulder: float = 15,
    stock: Stock = OAK,
) -> Assembly:
    """A frame corner with a stub tenon: shoulders on the faces and the outer edge only.

    On the inner edge the tenon is flush with the rail, with no shoulder;
    on the outer edge a plain shoulder sets the mortise back from the end
    of the stile, so it stays closed there. No haunch. Blind, two thirds of
    the stile wide. Compare `haunched_stub_tenon_corner` and
    `haunched_mortise_tenon_corner`, same stock and tenon length.
    """
    return _corner_tenon(
        "stub_tenon_corner",
        stile_length,
        rail_length,
        width,
        tenon_length,
        outer_shoulder=outer_shoulder,
        inner_shoulder=0,
        haunch_length=None,
        stock=stock,
    )

Exported with woodwright 0.9.0 on 2026-10-25.