Skip to content

Let in rail

joints.let_in_rail

A square rail lapped across a leg of the same section, at the rail's end, partly let in (as the rails of a workbench's legs): the rail is cut to half its thickness, the leg notched a quarter of its, so the rail stands out of the leg by a quarter, towards the viewer. Its end is flush with the far edge of the leg.

Let in rail, assembled

Let in rail, exploded

Parameters

Parameter Default
leg_length 400
rail_length 300
stock 70 mm board, oak

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

from woodwright.examples import joints

design = joints.let_in_rail(leg_length=500)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Leg

leg

Rail

rail

Cut list

leg   400 x 70 x 70 mm  oak
      - dado 70 mm, 17.5 deep, in bottom_face
rail  370 x 70 x 70 mm  oak
      - lap 35 mm thick, 70 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 let_in_rail(
    leg_length: float = 400, rail_length: float = 300, stock: Stock = POST_STOCK
) -> Assembly:
    """A square rail lapped across a leg of the same section, at the rail's
    end, partly let in (as the rails of a workbench's legs): the rail is
    cut to half its thickness, the leg notched a quarter of its, so the rail
    stands out of the leg by a quarter, towards the viewer. Its end is flush
    with the far edge of the leg.
    """
    asm = Assembly("let_in_rail", root_location=STANDING)
    leg = asm.add(Board("leg", stock, length=leg_length, width=stock.thickness))
    rail = asm.add(Board("rail", stock, length=rail_length, width=stock.thickness))
    asm.join(
        HalfLap(
            lap=rail.left_end,
            socket=leg.back_edge,
            position=offset(100, ref=leg.left_end),
            flush=(leg.bottom_face, rail.top_face),
            over=True,
            proud=stock.thickness / 4,
        )
    )
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.