Skip to content

Loose tongue panel

joints.loose_tongue_panel

Boards glued edge to edge, a loose tongue in a groove along each of the two edges at every joint.

The tongues are strips of 6 mm oak, their grain along the joint, tongue_width wide, half of it in each board. They stop stop short of the ends of the boards, in stopped grooves (cut with a router, here square-ended) 1 mm deeper than the tongues reach, so the ends of the panel show no grooves.

Loose tongue panel, assembled

Loose tongue panel, exploded

Parameters

Parameter Default
length 500
width 150
count 3
tongue_width 20
stop 20
stock 20 mm board, oak

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

from woodwright.examples import joints

design = joints.loose_tongue_panel(length=625)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Board

board

Board 2

board 2

Tongue

tongue

Cut list

board    500 x 150 x 20 mm  oak, 2 pieces: board_1, board_3
         - stopped groove 6 mm, 11 deep, in back_edge, 20 mm short of left_end and 20 mm short of right_end
board_2  500 x 150 x 20 mm  oak
         - stopped groove 6 mm, 11 deep, in front_edge, 20 mm short of left_end and 20 mm short of right_end
         - stopped groove 6 mm, 11 deep, in back_edge, 20 mm short of left_end and 20 mm short of right_end
tongue   460 x 20 x 6 mm  oak, 2 pieces: tongue_1, tongue_2

Code

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

def loose_tongue_panel(
    length: float = 500,
    width: float = 150,
    count: int = 3,
    tongue_width: float = 20,
    stop: float = 20,
    stock: Stock = OAK,
) -> Assembly:
    """Boards glued edge to edge, a loose tongue in a groove along each of
    the two edges at every joint.

    The tongues are strips of 6 mm oak, their grain along the joint,
    `tongue_width` wide, half of it in each board. They stop `stop` short
    of the ends of the boards, in stopped grooves (cut with a router, here
    square-ended) 1 mm deeper than the tongues reach, so the ends of the
    panel show no grooves.
    """
    asm = Assembly("loose_tongue_panel")
    boards = [
        asm.add(Board(f"board_{i + 1}", stock, length=length, width=width)) for i in range(count)
    ]
    for i, (a, b) in enumerate(itertools.pairwise(boards)):
        tongue = asm.add(
            Board(f"tongue_{i + 1}", SPLINE_OAK, length=length - 2 * stop, width=tongue_width)
        )
        asm.join(LooseTongue(a.back_edge, b.front_edge, tongue, through=False))
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.