Skip to content

Dovetail corner

joints.dovetail_corner

A through-dovetail corner of a carcase: tails on the top, pins on the side.

The heights and lengths are outside dimensions: the boards reach through each other, so their design lengths are shorter by the other board's thickness, which the joint adds back as an allowance.

Dovetail corner, assembled

Dovetail corner, exploded

Parameters

Parameter Default
side_height 400
top_length 500
depth 200
tail_count 4
stock 20 mm board, oak

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

from woodwright.examples import joints

design = joints.dovetail_corner(side_height=500)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Side

side

Top

top

Cut list

side  400 x 200 x 20 mm  oak
      - sockets for 4 dovetails
top   500 x 200 x 20 mm  oak
      - 4 dovetails, slope 1:7

Code

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

def dovetail_corner(
    side_height: float = 400,
    top_length: float = 500,
    depth: float = 200,
    tail_count: int = 4,
    stock: Stock = OAK,
) -> Assembly:
    """A through-dovetail corner of a carcase: tails on the top, pins on the side.

    The heights and lengths are outside dimensions: the boards reach through
    each other, so their design lengths are shorter by the other board's
    thickness, which the joint adds back as an allowance.
    """
    asm = Assembly("dovetail_corner", root_location=CASE_SIDE)
    side = asm.add(Board("side", stock, length=side_height - stock.thickness, width=depth))
    top = asm.add(Board("top", stock, length=top_length - stock.thickness, width=depth))
    asm.join(ThroughDovetail(tails=top.left_end, pins=side.right_end, tail_count=tail_count))
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.