Skip to content

Mitred shoulder tenon

joints.mitred_shoulder_tenon

A T-joint of square-ish stock: the rail reaches into a notch in the stile, mitred at both edges, and a stub tenon goes on from there.

The rail meets the stile on two short 45-degree mitres (by default a third of the stile wide) with a straight line between them. The tenon reaches half-way under the mitres both ways, for strength; there the mitres are cut only down to its cheeks.

Mitred shoulder tenon, assembled

Mitred shoulder tenon, exploded

Parameters

Parameter Default
stile_length 600
rail_length 300
width 45
stock 30 mm board, oak

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

from woodwright.examples import joints

design = joints.mitred_shoulder_tenon(stile_length=750)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Rail

rail

Stile

stile

Cut list

stile  600 x 45 x 30 mm  oak
       - mortise 30 x 10 mm, 37 deep, in back_edge
       - notch 45 long, 15 deep, mitred at both ends, in back_edge
rail   335 x 45 x 30 mm  oak
       - tenon 30 x 10 mm, 20 long, reaching 15 beyond the shoulder, mitred at front_edge, back_edge, on left_end

Code

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

def mitred_shoulder_tenon(
    stile_length: float = 600,
    rail_length: float = 300,
    width: float = 45,
    stock: Stock = THICK_OAK,
) -> Assembly:
    """A T-joint of square-ish stock: the rail reaches into a notch in the
    stile, mitred at both edges, and a stub tenon goes on from there.

    The rail meets the stile on two short 45-degree mitres (by default a
    third of the stile wide) with a straight line between them. The tenon
    reaches half-way under the mitres both ways, for strength; there the
    mitres are cut only down to its cheeks.
    """
    asm = Assembly("mitred_shoulder_tenon", root_location=STANDING)
    stile = asm.add(Board("stile", stock, length=stile_length, width=width))
    rail = asm.add(Board("rail", stock, length=rail_length, width=width))
    asm.join(MitredShoulderTenon(tenon=rail.left_end, mortise=stile.back_edge))
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.