---
title: "Standards"
description: "Mattress sizes, slat gaps and ergonomic ranges — every number with the source it came from, because an uncited number is an opinion."
url: https://kaicad.barpom.xyz/docs/catalogue/standards
schema: "0.1"
source: packages/catalogue/data/standards
---

# Standards

A standard is a published number a design can cite. **Every entry carries a `source`**, and
that is not decoration: the whole value of this validator is that it is not giving you
opinions. When a report says a slat gap is too wide, it can say who says so.

```yaml
parameters:
  - id: mattress
    type: catalog_ref
    catalog: standards.mattress
    value: us-queen

  - id: max_slat_gap
    type: length
    derived: standards.bed.slat_gap_max

requirements:
  must_satisfy:
    - standards.bed.slat_gap_max
    - standards.bed.centre_rail_required
```

Listing an id under `must_satisfy` turns its check from advisory into a **requirement of this
design**.

## Four kinds

| Kind | Shape | Read as |
| --- | --- | --- |
| `dimension_set` | Named sizes | `mattress.width` via a `catalog_ref` parameter |
| `limit` | One bound, `max` or `min` | `standards.bed.slat_gap_max` |
| `range` | `min`, `max`, `typical` | `standards.table.dining_height.typical` |
| `rule` | A requirement in prose, with a condition | Checked, not referenced |

---

## Beds

### `standards.mattress` — mattress sizes

`dimension_set`. **Source:** ISPA standard sizes for the US series; EN 1334 and common
European trade sizes for the eu- and uk- series.

| Value | Width | Length |
| --- | --- | --- |
| `us-twin` | 991 | 1880 |
| `us-twin-xl` | 991 | 2032 |
| `us-full` | 1372 | 1880 |
| `us-queen` | 1524 | 2032 |
| `us-king` | 1930 | 2032 |
| `us-cal-king` | 1829 | 2134 |
| `uk-single` | 900 | 1900 |
| `uk-double` | 1350 | 1900 |
| `uk-king` | 1500 | 2000 |
| `uk-super-king` | 1800 | 2000 |
| `eu-single` | 900 | 2000 |
| `eu-double` | 1400 | 2000 |
| `eu-queen` | 1600 | 2000 |
| `eu-king` | 1800 | 2000 |

These are **nominal finished sizes**. Real mattresses vary by ±10 mm or so between makers,
which is exactly why `mattress_clearance` should be a parameter with a sane default rather
than a number baked into a rail length.

### `standards.bed.slat_gap_max` — maximum clear gap between slats

`limit`: **76 mm max**.

**Source:** consensus of mattress-maker warranty conditions — Tempur, Sealy, IKEA and others
all specify 75–80 mm; 76 mm is the most commonly stated figure and the most conservative in
wide use.

Foam and hybrid mattresses sag between slats further apart than this, and most warranties are
void above it. Sprung mattresses tolerate more, but there is no reason to design to a looser
number.

This is what an [array count](/docs/schema/arrays#compute-the-count-do-not-count-it) should be
derived from, so that changing the mattress size adds slats by itself.

### `standards.bed.slat_thickness_min` — minimum slat thickness in softwood

`limit`: **18 mm min**. **Source:** common trade practice for slatted bases at 900–1600 mm
spans.

### `standards.bed.centre_rail_required` — centre rail above a threshold width

`rule`. Applies when `mattress.width > 1370`.

> A bed wider than 1370 mm needs a centre support rail with at least one leg to the floor, so
> the slats do not span the full width unsupported.

**Source:** mattress warranty conditions for queen and larger sizes; universally required by
US makers above 1370 mm width.

This is [`DOM-002`](/docs/validation/error-codes#dom-002), and it is one of the four things
the validator found wrong with the golden queen bed the first time it ran.

### `standards.bed.deck_height` — comfortable mattress-top height

`range`: 450 – 650 mm, typical **560**.

**Source:** anthropometric guidance for sit-to-stand transfer; matches the range used in
accessible-design guidance for bed height.

This is the top of the **mattress**, not the deck. Subtract the mattress thickness to get the
slat height the design actually controls — a 300 mm deck under a 260 mm mattress gives 560.

### `standards.bed.mattress_clearance` — clearance per side

`range`: 3 – 15 mm, typical **6**. **Source:** trade practice; accounts for maker-to-maker
size variation.

Too tight and the mattress will not drop in; too loose and it slides and opens a gap at the
head.

---

## Tables and desks

| Id | Kind | Figures | Source |
| --- | --- | --- | --- |
| `standards.table.dining_height` | range | 710 – 760, typical 750 | BS EN 1730, BIFMA G1, trade practice |
| `standards.table.desk_height` | range | 720 – 750, typical 730 | BS EN 527-1, fixed-height category |
| `standards.table.counter_height` | range | 890 – 950, typical 910 | Trade practice — European carcass plus worktop |
| `standards.table.place_setting_width` | range | 550 – 700, typical 600 | Trade practice for dining layout |

### `standards.table.knee_clearance`

`limit`: **685 mm min** clear height under an apron.

**Source:** ADA Standards §306.3 and BS 8300-2, which both require at least 685 mm clear for a
seated user.

This is the one ergonomic figure that is a **hard accessibility requirement** rather than a
comfort range, which is why it is a limit and not a range. A 750 mm dining table with a 90 mm
apron leaves 660 and fails it.

### `standards.table.legroom_depth`

`limit`: **480 mm min** clear depth under a table. **Source:** ADA Standards §306.3.

---

## Seating

| Id | Kind | Figures | Source |
| --- | --- | --- | --- |
| `standards.seat.height` | range | 400 – 460, typical 450 | BS EN 1729-1 size mark 6 |
| `standards.seat.depth` | range | 380 – 450, typical 420 | Buttock-to-popliteal length, 5th percentile |

---

## Shelving and casework

### `standards.shelf.clear_height`

`range`: 220 – 400 mm, typical **300**. **Source:** trade practice — paperbacks to
large-format art books.

### `standards.shelf.deflection_limit`

`limit`: **span/200 max**, expressed as a span divisor.

**Source:** woodworking convention — sag becomes visible at roughly span/200 and is widely
treated as unacceptable beyond it. Structural practice for floors uses span/360, which is
stricter than a shelf needs.

A 900 mm shelf may sag 4.5 mm. Use `deflection_limit: span/360` in
[`requirements`](/docs/schema/requirements) if the shelf sits next to a fixed reference line
where sag shows up.

### `standards.case.toe_kick`

`range`: 75 – 100 mm, typical **90**. **Source:** trade practice for standing-height casework.

---

## Errors and warnings

The ergonomic ranges drive [`DOM-003`](/docs/validation/error-codes#dom-003), and they are
**warnings**. A 780 mm table is unusual, not wrong, and the report's job is to say "this is
outside the normal range, and here is the range" rather than refuse to compile it.

`standards.table.knee_clearance` is the exception, as noted above — an accessibility
requirement, checked as a limit.

Anything you list under `must_satisfy` is checked as a requirement of the design regardless of
its default severity.
