Skip to content

Bed bolts

This page as Markdown/docs/catalogue/bed-bolts.mdView .md

A bed bolt passes through the post from the outside and threads into a steel cross dowel buried in the end of the rail. It is the joint that lets a bed come apart to get up a staircase, and it is the clearest illustration of why a fixture in this catalogue is a machining recipe rather than a mesh.

One declaration cuts five holes across two parts, one of them perpendicular to the other four and at a specific depth. Getting the cross-dowel bore wrong is the classic way a knock-down bed fails.

- id: rail_to_head_post_left
kind: bed_bolt
fixture: fixtures.bed_bolt.m8x150
removable: true
through: head_post@left
mate:
a: side_rail@left:face.start
b: head_post@left:face.top
align: { contact: true, roll: -90, offset: [rail_drop_on_head_post, 0, 0] }
fasteners:
pattern: { along: length, count: 2, spacing: 100, from: ..., to: ... }
Id d Length Drive Dowel Washer
fixtures.bed_bolt.m6x80 6 80 Hex 4 10 × 25, M6 12
fixtures.bed_bolt.m8x100 8 100 Hex 5 12 × 30, M8 16
fixtures.bed_bolt.m8x130 8 130 Hex 5 12 × 30, M8 16
fixtures.bed_bolt.m8x150 8 150 Hex 5 12 × 30, M8 16

All four use through_from: oppositethe bolt is driven through the post from the outside, so its head and counterbore are on the face away from the rail. This is the field that catches people; see through.

Id Clearance Counterbore
m6x80 7 mm, through 14 × 7
m8x100 9 mm, through 18 × 8
m8x130 9 mm, through 18 × 8
m8x150 9 mm, through 18 × 8
Id Bolt bore Cross bore At depth
m6x80 7 mm × 50 deep 10.5 mm, through the width 35
m8x100 9 mm × 60 deep 12.5 mm, through the width 40
m8x130 9 mm × 85 deep 12.5 mm, through the width 65
m8x150 9 mm × 100 deep 12.5 mm, through the width 80

The bolt bore runs in from the mating face — the end of the rail. The cross bore is drilled perpendicular to it, at at_depth from that same face, and must intersect the bolt bore for the dowel to capture the bolt.

Those two numbers have to agree with each other and with the bolt’s length, which is precisely why nobody should be typing them.

Id Min edge Min end Min engagement Min spacing
m6x80 20 30 40 60
m8x100 18 38 50 70
m8x130 18 38 70 70
m8x150 18 38 70 70

All require a square shoulder — the rail end has to meet the post flat, because the joint is a clamp and a gappy shoulder makes it a hinge.

The edge distance is governed by the cross dowel, not the bolt. A 12.5 mm bore wants about 1.4 diameters of wood on each side, so an M8 bed bolt needs a rail of roughly 35 mm or more. An M8 through a 25 mm rail leaves 3.5 mm of timber around an 18 mm counterbore, and the validator says so:

FAS-001 M8 bed bolts through a 25 mm rail leave 3.5 mm of wood around the
counterbore. Use `fixtures.bed_bolt.m6x80`, or increase the rail
thickness to 38 mm.

All four carry forbid_into_end_grain: allow, which is the opposite of every other fixture in the catalogue.

The bolt threads into a steel cross dowel, not into the wood. That is the entire reason this joint exists: the end of a rail is the worst place in a piece of furniture to put a screw, and a bed bolt does not put one there.

The bolt has to pass through the post and still reach a dowel far enough into the rail:

post thickness − counterbore depth + cross-dowel depth ≤ bolt length

The counterbore buries the head, so it does not count against the length. A 75 mm post with the M8 × 150 works out at 75 − 8 + 80 = 147, inside the bolt’s 150 — which is why that entry notes it suits a 75 mm post. A thinner post takes a shorter bolt.

Two bolts per corner, 100 mm apart, is the normal arrangement. One bolt is a pivot.

Hex key, removable, and the step hint is final_assembly — the bolts go in last, after the ends are stood up and the rails are offered in. The assembly steps generated from assembly.disassembly put them in that order.

Id Pack sizes Unit cost
m6x80 4 · 8 1.80
m8x100 4 · 8 2.40
m8x130 4 · 8 2.90
m8x150 4 · 8 3.40

A bed with two bolts at each of four corners needs eight, which is one pack.