Data sources and provenance
Every value in this site's data traces to a US Government work — public domain under 17 U.S.C. §105. No attribution requirement, no share-alike, no restriction on commercial or ad-supported use. Nothing here is sourced from Wikipedia, a commercial wood database, or a competitor's compiled table.
The documents
- USDA Forest Products Laboratory, Wood Handbook: Wood as an Engineering Material, FPL-GTR-282 (2021), Chapter 4 — moisture and physical properties: research.fs.usda.gov/download/treesearch/62243.pdf
- USDA Forest Products Laboratory, Wood Handbook, Chapter 5 — mechanical properties: research.fs.usda.gov/download/treesearch/62244.pdf
- NIST / US Dept of Commerce Voluntary Product Standard PS 20-25, American Softwood Lumber Standard (January 2025): alsc.org/uploaded/PS 20-25 Final.pdf
What each column comes from
| Column | Source |
|---|---|
Specific gravity (sgGreen) | Wood Handbook Ch. 5, Tables 5-3b / 5-4b — the "Green" row, basic specific gravity (ovendry mass over green volume) |
| Janka hardness | Wood Handbook Ch. 5, Tables 5-3b / 5-4b — side hardness, lbf, the "12%" row, ASTM D143 method |
| Green moisture content | Wood Handbook Ch. 4, Table 4-1 — heartwood and sapwood values, separately |
| Volumetric shrinkage | Wood Handbook Ch. 4, Table 4-3 — green to ovendry |
| Dressed lumber sizes | NIST PS 20-25, Table 3 |
How the specific-gravity data was verified
The Wood Handbook's tables are printed in two columns per page, and plain
pdftotext extraction silently misassigns values between adjacent
species rows on them — confirmed, not theoretical: one early pass attached
the "Honeylocust" row label to mockernut hickory's data. Every value here was
re-extracted with pdfplumber, which reconstructs table rows from
word coordinates instead of raw reading order.
The specific-gravity column used on this site and its check value (the published 12%-MC specific gravity, used only to validate the model, never to compute a weight) were extracted in two separate passes by different processes, neither seeing the other's output. That is the whole point: if one pass misreads a row, it corrupts the data but not the check, so a misaligned row fails a test instead of shipping quietly. The two passes independently produced identical species name sets — 114 keys, zero unmatched — and zero species came back with the 12% value less than or equal to the green value across all 111 paired rows, which is what a swapped or duplicated row would produce.
See how these sources become a weight for the equations themselves.