---
title: "Species"
description: "Fourteen timbers with density, stiffness, seasonal movement and screw-holding — the properties the deflection, wood-movement and fastener checks read."
url: https://kaicad.barpom.xyz/docs/catalogue/species
schema: "0.1"
source: packages/catalogue/data/species
---

# Species

Species carry the physical properties that solid-lumber families inherit. Naming one in a
material is what gives the validator something to reason with: a pine cleat and a maple rail
of identical size take the same screw and hold it differently, and the report says so.

```yaml
materials:
  - id: rail_stock
    from: lumber.hardwood.s4s
    species: walnut
    thickness: 38
    width: 190
```

## Hardwoods

Available in `lumber.hardwood.s4s` and `lumber.hardwood.rough`.

| Id | | Density | E | MOR | Movement T / R | Screw face / end | Hardness |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `walnut` | American black walnut | 610 | 11 600 | 101 | 2.57 / 1.82 | high / low | 4490 |
| `white_oak` | White oak | 755 | 12 300 | 105 | 3.50 / 1.80 | high / low | 6000 |
| `red_oak` | Red oak | 700 | 12 500 | 99 | 3.47 / 1.37 | high / low | 5700 |
| `ash` | White ash | 670 | 12 000 | 103 | 2.60 / 1.60 | high / low | 5870 |
| `maple` | Hard maple | 705 | 12 600 | 109 | 3.23 / 1.60 | high / low | 6450 |
| `cherry` | Black cherry | 560 | 10 300 | 85 | 2.53 / 1.17 | medium / low | 4230 |
| `beech` | European beech | 720 | 14 300 | 103 | 3.87 / 1.87 | high / low | 5800 |
| `birch` | Yellow birch | 670 | 13 900 | 114 | 3.00 / 2.43 | high / low | 5580 |
| `poplar` | Yellow poplar | 455 | 10 900 | 70 | 2.73 / 1.40 | medium / poor | 2420 |

## Softwoods

Available in `lumber.softwood.s4s`.

| Id | | Density | E | MOR | Movement T / R | Screw face / end | Hardness |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `pine` | Scots pine / European redwood | 510 | 10 100 | 83 | 2.47 / 1.33 | medium / poor | 2420 |
| `spruce` | European spruce / whitewood | 450 | 10 200 | 70 | 2.57 / 1.27 | low / poor | 1800 |
| `douglas_fir` | Douglas fir | 530 | 13 400 | 85 | 2.43 / 1.60 | medium / poor | 2900 |
| `western_red_cedar` | Western red cedar | 350 | 7700 | 51 | 1.67 / 0.80 | low / poor | 1560 |
| `larch` | European larch | 590 | 12 500 | 92 | 2.50 / 1.43 | medium / poor | 3200 |

Units: density kg/m³ · **E** (modulus of elasticity) MPa · **MOR** (modulus of rupture) MPa ·
movement % per 10% change in moisture content, tangential / radial · hardness N (Janka).

## What each figure is used for

**Density** sets the weight on the BOM and feeds the load checks. A queen bed in white oak is
noticeably heavier than the same bed in pine, which matters if it has to be carried upstairs
assembled.

**Modulus of elasticity** drives every deflection check — shelf sag, rail bending under
`max_assembled_load`. It is the number that decides whether an 900 mm shelf needs to be 19 mm
or 25 mm, and the finding tells you which.

**Modulus of rupture** is the breaking stress, used for the margin against outright failure
rather than visible sag.

**Movement, tangential and radial**, is seasonal shrinkage per 10% change in moisture content.
Tangential movement is roughly twice radial in most timbers, which is why a flat-sawn panel
moves more than a quarter-sawn one. The wood-movement checks read these together with the
part's [`grain`](/docs/schema/parts#grain) to work out whether a captured panel will split its
frame.

White oak at 3.50% tangential is the mover in this list; western red cedar at 1.67% is the
most stable. The arithmetic is *width × coefficient × (MC swing ÷ 10)*: a 560 mm flat-sawn
white-oak panel through a 4% seasonal swing moves 560 × 0.035 × 0.4 ≈ **7.8 mm**. Indoor
timber typically swings 4–5% between winter and summer, so substitute your own figure — the
point is that it is millimetres, not fractions of one, and a frame that did not allow for it
splits.

**Screw withdrawal**, face and end, is graded `high` · `medium` · `low` · `poor`. The
fastener checks use it, and note that **every timber here rates worse in end grain than in
face grain** — which is why `forbid_into_end_grain` exists on the fixtures and why bed bolts,
which thread into a steel cross dowel rather than into wood, are the right answer for a rail
end.

**Hardness** is Janka, in newtons. It does not drive a check; it is there for choosing a
timber for a surface that gets used.

## Sources

Figures are at approximately 12% moisture content, from the **USDA Wood Handbook
(FPL-GTR-282, 2021)**, Tables 5-3 and 5-5, converted to SI. Movement coefficients are total
green-to-ovendry shrinkage divided by 30% MC, the standard linear approximation for seasonal
movement in service.

These are published material properties, not anyone's dataset. The catalogue is
**CC0-1.0**.

## Sheet goods do not have a species

A panel behaves the way it does because of how it is built, not what tree it came from, so
sheet materials carry their own properties — see [Sheet goods](/docs/catalogue/sheet-goods).
The one exception is `sheet.veneered.mdf`, which takes a species for the veneer, because the
veneer is directional and the sheet has a show face.
