Skip to content

Dovetail drawer

projects.dovetail_drawer

A drawer box with through dovetails at all four corners (no bottom); outside sizes.

The front and the back have pins at both ends, the sides tails at both ends, so the front can't be pulled off. All boards have their reference faces outside and reference edges at the bottom; the back and the right side are mirror images of the front and the left side.

Dovetail drawer, assembled

Dovetail drawer, exploded

Parameters

Parameter Default
width 400
depth 500
height 150
stock 20 mm board, oak

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

from woodwright.examples import projects

design = projects.dovetail_drawer(width=500)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Front back

front back

Left right

left right

Cut list

front_back  400 x 150 x 20 mm  oak, 2 pieces: front, back
            - 2 x sockets for 3 dovetails
left_right  500 x 150 x 20 mm  oak, 2 pieces: left, right
            - 2 x 3 dovetails, slope 1:7

Code

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

def dovetail_drawer(
    width: float = 400,
    depth: float = 500,
    height: float = 150,
    stock: Stock = OAK,
) -> Assembly:
    """A drawer box with through dovetails at all four corners (no bottom); outside sizes.

    The front and the back have pins at both ends, the sides tails at both
    ends, so the front can't be pulled off. All boards have their reference
    faces outside and reference edges at the bottom; the back and the right
    side are mirror images of the front and the left side.
    """
    t = stock.thickness
    asm = Assembly("dovetail_drawer", root_location=BOX_FRONT)
    front = asm.add(Board("front", stock, length=width - 2 * t, width=height))
    back = asm.add(Board("back", stock, length=width - 2 * t, width=height, mirror=True))
    left = asm.add(Board("left", stock, length=depth - 2 * t, width=height))
    right = asm.add(Board("right", stock, length=depth - 2 * t, width=height, mirror=True))
    # The sides' right ends are at the front.
    for side, front_end, back_end in [
        (left, front.left_end, back.left_end),
        (right, front.right_end, back.right_end),
    ]:
        asm.join(ThroughDovetail(tails=side.right_end, pins=front_end, tail_count=3))
        asm.join(ThroughDovetail(tails=side.left_end, pins=back_end, tail_count=3))
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.