Skip to content

Wedged through tenon

joints.wedged_through_tenon

A through tenon spread by two wedges into a mortise flared towards the outside.

Two saw kerfs in the end of the tenon, near its edges, take the wedges; driven in, they bend the outer parts of the tenon out into the flares at the ends of the mortise, so the joint can't pull out even without glue. The mortise is flared along the stile, not across it, which would split it. The wedges are planed flush with the tenon; the stile stands with the tenon's end towards the viewer.

Wedged through tenon, assembled

Wedged through tenon, exploded

Parameters

Parameter Default
stile_length 600
rail_length 300
width 60
kerf 2
flare 3
stock 20 mm board, oak

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

from woodwright.examples import joints

design = joints.wedged_through_tenon(stile_length=750)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Rail

rail

Stile

stile

Wedge

wedge

Cut list

stile  600 x 60 x 20 mm  oak
       - through mortise 40 x 8 mm in back_edge
       - mortise flared 3 mm at the ends over 40, in back_edge
rail   360 x 60 x 20 mm  oak
       - tenon 40 x 8 mm, 60 long, 2 saw kerfs 2 mm, 40 deep, for wedges, on left_end
wedge  40 x 5 x 8 mm  oak, 2 pieces: wedge_1, wedge_2
       - taper 3 mm on back_edge towards right_end

Code

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

def wedged_through_tenon(
    stile_length: float = 600,
    rail_length: float = 300,
    width: float = 60,
    kerf: float = 2,
    flare: float = 3,
    stock: Stock = OAK,
) -> Assembly:
    """A through tenon spread by two wedges into a mortise flared towards the outside.

    Two saw kerfs in the end of the tenon, near its edges, take the wedges;
    driven in, they bend the outer parts of the tenon out into the flares at
    the ends of the mortise, so the joint can't pull out even without glue.
    The mortise is flared along the stile, not across it, which would split
    it. The wedges are planed flush with the tenon; the stile stands with
    the tenon's end towards the viewer.
    """
    asm = Assembly("wedged_through_tenon", root_location=orient(right_end=UP, back_edge=LEFT))
    stile = asm.add(Board("stile", stock, length=stile_length, width=width))
    rail = asm.add(Board("rail", stock, length=rail_length, width=width))
    # As thick as the tenon, as long as the kerfs (two thirds of the stile),
    # at the head as wide as the kerf and the spread.
    wedge_stock = Stock.board(thickness=rules.tenon_thickness(stock.thickness), species="oak")
    wedges = tuple(
        asm.add(Board(f"wedge_{i + 1}", wedge_stock, length=width * 2 / 3, width=kerf + flare))
        for i in range(2)
    )
    asm.join(
        WedgedMortiseTenon(
            tenon=rail.left_end, mortise=stile.back_edge, shoulder=10, wedges=wedges, kerf=kerf
        )
    )
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.