Methodology
Where every number came from
This page names every dataset the site is built on, when it was retrieved, how many rows survived, and what was thrown away. If a figure appears anywhere on this site, it came from something on this page.
Last reviewed 4 September 2026
The principle
A page exists on this site because a row exists in a dataset. Nothing is generated from a template and filled with plausible content, and nothing is written from memory. Where a value could not be sourced it is omitted, and the omission is stated.
Government data is downloaded, parsed by a script that is in the repository, and the derived JSON is committed. The site build reads only those committed files and never touches the network. That makes a build reproducible and stops the site hammering a public API every time it deploys.
Datasets
| Dataset | Rows kept | Retrieved | Where |
|---|---|---|---|
| 9 CFR 424.21(c), chart of approved food ingredients | 250 | 2026-09-04 | eCFR |
| 9 CFR 424.1, 424.22, 424.23 | 3 | 2026-09-04 | eCFR |
| 9 CFR part 319, standards of identity | 57 | 2026-09-04 | eCFR |
| 9 CFR part 318, preparation of products | 20 | 2026-09-04 | eCFR |
| 9 CFR 318.10, 2018 edition, withdrawn | 1 | 2026-09-04 | 83 FR 25302, 31 May 2018 |
| eAmbrosia, EU geographical indications register | 407 | 2026-09-04 | Register |
| USDA FoodData Central, cured meat composition | 360 | 2026-09-04 | FDC |
| FSIS Trichinella guideline, six numeric tables | 48 | 2026-09-04 | FSIS-GD-2016-0002 |
Four further FSIS documents are quoted but not parsed into tables, because their content is prose rather than rows:
- FSIS Ready-to-Eat Fermented, Salt-Cured, and Dried Products Guideline, FSIS-GD-2023-0002. Landing page
- FSIS Compliance Guideline for Meat and Poultry Jerky, FSIS-GD-2014-0010. Landing page
- FSIS Cooking Guideline for Meat and Poultry Products, revised Appendix A, December 2021, announced at 86 FR 71007.
- FSIS Stabilization Guideline for Meat and Poultry Products, revised Appendix B, December 2021, FSIS-GD-2021-0013.
How the CFR is parsed
The eCFR serves the Code of Federal Regulations as structured XML through a versioned API. Every CFR figure on this site is parsed from that markup by scripts/extract_cfr.py, not retyped. The date is pinned to 2026-01-01, so re-running the script produces the same JSON.
The chart in 424.21(c) needed one piece of real work. It uses three kinds of ditto mark for a repeated value: an empty cell, "......do" and "Do." A row rendered with those left in place says nothing about what the regulation permits. The parser carries each column forward, so every one of the 250 rows on this site is complete. Footnote markers survive as bare digits and the footnotes themselves are pulled from the table's own footer, because footnote 3 is what "sufficient for purpose" actually means.
How the EU register is read
eAmbrosia is a single-page application over an undocumented but stable public API. The base URL is read out of the register's own front-end bundle. A POST to gi-applications/filter returns the whole register; a GET to gi-applications/id/{id} adds the producer group and the publication list.
The register held 3978 entries at retrieval. Product categories 1.1 (fresh meat and offal) and 1.2 (meat products: cooked, salted, smoked) were kept, giving 407. Category 1.1 is included even though not all of it is cured, so that a reader looking up a fresh-meat name finds a page saying it is not a cured product rather than a 404. Detail records were fetched one at a time with a 350 ms space between requests.
How composition is selected
FoodData Central was searched with 45 cured-meat terms across the SR Legacy, Foundation and Survey (FNDDS) data types, returning 3462 distinct foods. Branded Foods was excluded: it is manufacturer-submitted label data running to several hundred thousand near-duplicate rows and adds nothing to a reference.
A food was kept only if it sat in a meat food category and its description matched one of the cured-meat terms below. Two categories were dropped entirely: "Meat mixed dishes", which is composed dishes rather than cured products, and "Finfish and Shellfish Products", because salt-cured fish is a different subject with different parameters. That left 360.
cured, cure,, smoked, smoke, dried, salt, salted, brine, pickled, corned, bacon, ham, sausage, salami, pepperoni, prosciutto, jerky, chorizo, pastrami, bologna, frankfurter, frankfurt, mortadella, capicola, capocollo, soppressata, coppa, pancetta, bratwurst, kielbasa, liverwurst, braunschweiger, head cheese, andouille, linguica, chourico, knockwurst, knackwurst, vienna, luncheon, cold cut, deli, speck, lardon, scrapple, blood pudding, black pudding, pepper loaf, olive loaf, pickle and pimiento, summer sausage, beerwurst, berliner, thuringer, cervelat, lebanon bologna, chipped beef, dried beef, salt pork, pork belly, cured, turkey ham, potted
Nutrients are read by FDC nutrient id, not by name. Names drift between data types and ids do not, and reading by name is how a sodium figure silently becomes a potassium figure.
How the FSIS guidelines are handled
www.fsis.usda.gov returns 403 to an ordinary client, and its HTML pages return 403 even with a full browser header set. The PDFs are reachable with browser headers and a Referer. Two of them - the 2021 Cooking and Stabilization Guidelines - now 404 at their fsis.usda.gov paths and were retrieved from the North Carolina Department of Agriculture's mirror of the same December 2021 files. Two more came from usda.gov's own guidance-documents store. The FSIS landing page for each document is what this site cites as the authority.
Tables 2, 3 and 4 of the 2021 Cooking Guideline - the lethality time and temperature combinations - are raster images inside the PDF with no text layer. They are not reproduced anywhere on this site. Transcribing a safety table by eye is an error that does not announce itself, and the guideline is linked instead.
What is derived and how
Four quantities on this site are computed rather than quoted. Each one shows its arithmetic on the page where it appears.
| Quantity | From | Basis |
|---|---|---|
| 156.25 ppm, comminuted meat nitrite maximum | 1/4 oz to 100 lb, 9 CFR 424.21(c) | Exact: the pound is 0.45359237 kg by definition, the ounce is 1/16 of it |
| 625 ppm, dry cure nitrite maximum | 1 oz to 100 lb, 9 CFR 424.21(c) | Same conversion |
| 900 degree-hours | "18 hours or less (maximum allowable degree-hours at 110 F)", FSIS-GD-2023-0002 | 110 less the 60 F base is 50 degrees; 50 x 18 = 900 |
| Salt from sodium, factor 2.542 | FoodData Central sodium figures | Molar mass ratio, NaCl 58.44 over Na 22.99 |
What was excluded
- The pickle nitrite figure. 9 CFR 424.21(c) permits 2 lb to 100 gallons of pickle at a 10 percent pump level. Converting it needs the density of the pickle, which the regulation does not state. Not converted.
- Maximum degree-hours. FSIS points at an American Meat Institute document for the limits. That document is not a government publication and this site does not hold a copy, so the figures that circulate are not printed as FSIS figures.
- The Appendix A lethality tables. Published as images. Linked, not transcribed.
- Weight loss targets other than 18 percent. 9 CFR 319.106(b)(7) is the only weight-loss figure in US law. The 30, 35 and 40 percent targets in general circulation are trade practice and are not printed as parameters.
- Product specification text. The EU register records that a specification exists and where it was published, but does not serve its text through the API, so no salting time or ageing minimum from a PDO specification appears on this site.
- Product classes that joined to nothing. Bündnerfleisch, Guanciale, 'Nduja, Lap cheong, Landjäger, Andouille, Salo and cured fat. Dropped from the build rather than shipped as empty pages.
Reproducing this
The scripts are in the repository and run in this order: scripts/extract_cfr.py, scripts/extract_gi.py, scripts/fetch_fsis.sh, scripts/extract_fsis.py, scripts/extract_fdc.py, and scripts/resolve-amazon.mjs for the commercial listings. The first five need only Python 3 and, for the FSIS step, poppler's pdftotext. FoodData Central needs a free API key.
The last of those is the only script that touches a commercial API, and its output is committed to the repository like every other dataset here, for the same reason: a page that fetched a price when you loaded it would re-render on every request. It resolves five groups against the Amazon Creators API - equipment, supplies, the 9 CFR 424.21 chart substances, product classes and registered protected names - and applies a set of guards described on disclosures. A slot with no result that clears them gets no listing rather than an approximate one, which is why most of the ingredient pages and most of the protected-name pages carry nothing.
Known gaps and errors are recorded separately on corrections.