Skip to content

Sliding dovetail shelf

joints.sliding_dovetail_shelf

A shelf with a dovetail tongue slid into a dovetail socket across the side.

Like the dado shelf, but the shelf can't be pulled out of the side.

Sliding dovetail shelf, assembled

Sliding dovetail shelf, exploded

Parameters

Parameter Default
side_height 400
shelf_length 300
depth 200
shelf_height 150
stock 20 mm board, oak

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

from woodwright.examples import joints

design = joints.sliding_dovetail_shelf(side_height=500)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Shelf

shelf

Side

side

Cut list

side   400 x 200 x 20 mm  oak
       - dovetail socket 10 mm at the face, 6.5 deep, 1:7, in bottom_face
shelf  306.5 x 200 x 20 mm  oak
       - dovetail tongue 10 mm at the shoulder, 6.5 long, 1:7, on left_end

Code

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

def sliding_dovetail_shelf(
    side_height: float = 400,
    shelf_length: float = 300,
    depth: float = 200,
    shelf_height: float = 150,
    stock: Stock = OAK,
) -> Assembly:
    """A shelf with a dovetail tongue slid into a dovetail socket across the side.

    Like the dado shelf, but the shelf can't be pulled out of the side.
    """
    asm = Assembly("sliding_dovetail_shelf", root_location=CASE_SIDE)
    side = asm.add(Board("side", stock, length=side_height, width=depth))
    shelf = asm.add(Board("shelf", stock, length=shelf_length, width=depth))
    asm.join(
        SlidingDovetail(
            socket=side.bottom_face,
            end=shelf.left_end,
            position=offset(shelf_height, side.right_end),
        )
    )
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.