How to build an FDA Nutrition Facts label
The Nutrition Facts panel looks simple because fifty years of regulation sanded it down to one job: be readable at arm’s length in a grocery aisle. Building a correct one is five steps — serving size, nutrient values, rounding, % Daily Values, layout — and each has rules that are exact, published, and unforgiving. This guide walks all five, with the actual tables, then shows where software earns its keep.
Everything below comes from 21 CFR 101.9 (the Nutrition Facts rules) and 21 CFR 101.12 (the reference-amount tables). It applies to conventional foods sold in the US; dietary supplements use the sibling format in 21 CFR 101.36, covered at the end. One thing up front, because it matters more than any table: a correctly formatted panel is not the same as a compliant product. The values you print are your responsibility, and a qualified labeling expert should verify the final artwork before it ships.
Step 1 — Fix the serving size before anything else
Every number on the panel is “per serving,” so the serving size is the load-bearing decision. You don’t choose it freely: the FDA publishes Reference Amounts Customarily Consumed (RACCs) per food category in 21 CFR 101.12 — 55 g for granola, 240 ml for most beverages, 30 g for chips, and so on.
- Find your category’s RACC in the 101.12 tables. Your serving is the household measure (cups, pieces, tablespoons) that gets closest to the RACC, followed by the metric weight in parentheses: 2/3 cup (55g).
- Declare servings per container — the container’s net weight divided by the serving weight, rounded per the rule (nearest 0.5 between 2 and 5, nearest whole number above 5).
- Check the dual-column trigger. If the whole package holds between 200% and 300% of the RACC — a pint of ice cream is the classic case — you must show both per-serving and per-package columns. Single-serving containers that are ≤200% of the RACC are labeled as one serving.
Get this wrong and every other number on the panel is wrong with it. Get it right and the rest is arithmetic.
Step 2 — Get nutrient values you can defend
There are three legitimate sources of per-serving nutrient data, in descending order of defensibility:
- Laboratory analysis. An AOAC-method nutrient analysis of your finished product. This is the gold standard and the only source that accounts for your actual recipe, process losses, and lot-to-lot variance. Expect a few hundred dollars per product.
- Database calculation. Build the recipe from reference data — the USDA’s FoodData Central is the canonical US source — scaled by ingredient weights and yield. Respectable for simple products with minimal processing; shaky wherever frying, brining, or fermentation changes the profile.
- Supplier data. For a private-label product, the manufacturer’s spec sheet. Verify it’s for your formulation, not the house recipe.
Where the app fits: Nutrition Maker’s editor has a built-in USDA FoodData Central lookup that prefills per-serving values from your ingredients. It’s a genuine head start for option 2 — and it is deliberately labeled as a starting point, not an analysis. The numbers you print are still yours to stand behind.
Step 3 — Round every value by the FDA’s increments
You never print raw analytical values. 21 CFR 101.9(c) prescribes a display increment per nutrient, with “zero” and “less than” thresholds — and midpoints round half up, not banker’s rounding. These are the increments for the mandatory nutrients:
| Nutrient | Zero below | Increment |
|---|---|---|
| Calories | < 5 cal | Nearest 5 up to 50 cal; nearest 10 above 50 |
| Total / saturated / trans fat | < 0.5 g | Nearest 0.5 g below 5 g; nearest 1 g at 5 g and up |
| Cholesterol | < 2 mg | “Less than 5 mg” from 2–5 mg; nearest 5 mg above |
| Sodium | < 5 mg | Nearest 5 mg up to 140 mg; nearest 10 mg above |
| Carbohydrate, fiber, sugars, protein | < 0.5 g | “Less than 1 g” from 0.5–1 g; nearest 1 g above |
Two things here catch hand-built labels constantly. First, the thresholds: 0.4 g of fat rounds to 0 g, but 0.6 g rounds to 0.5 g, not 1 g. Second, the rounding is for display only — the next step uses the unrounded numbers.
Step 4 — Compute % Daily Values from the unrounded values
The %DV column divides the nutrient amount by its Daily Value — the 2016-rule reference amounts — using the unrounded analytical value, then rounds the percentage itself. Macros with a Daily Value display to the nearest 1%. The four micronutrients use a coarser grid and a reporting threshold:
- Below 2% DV: the value may be omitted (or declared with a footnote).
- 2–10%: nearest 2%.
- 10–50%: nearest 5%.
- Above 50%: nearest 10%.
The Daily Values for adults and children 4+ (2,000-calorie basis):
| Nutrient | Daily Value | Nutrient | Daily Value |
|---|---|---|---|
| Total fat | 78 g | Added sugars | 50 g |
| Saturated fat | 20 g | Protein | 50 g |
| Cholesterol | 300 mg | Vitamin D | 20 mcg |
| Sodium | 2,300 mg | Calcium | 1,300 mg |
| Total carbohydrate | 275 g | Iron | 18 mg |
| Dietary fiber | 28 g | Potassium | 4,700 mg |
No Daily Value is established for trans fat or total sugars — those rows simply carry no percentage. Potassium’s 4,700 mg is the current US value; don’t copy the older 3,500 mg from pre-2016 labels or the 3,400 mg Canada is moving to.
Worked example, from the FDA’s own granola panel: 4.75 g of saturated fat displays as 4.5 g (nearest 0.5), but its %DV is 4.75 ÷ 20 = 23.75% → 24%, not the 23% you’d get from the rounded 4.5 g. The same rule is why the sample’s 8 mg of iron prints as 45% DV: the underlying 8.1 mg ÷ 18 mg = 45%. Compute from unrounded values — always.
Step 5 — Lay out the panel exactly
The format itself is regulated: black type on a white or neutral background, a hairline box, the Nutrition Facts title in the heaviest weight on the label, thick horizontal bars separating the title/calories block from the nutrients, hairlines between rows, and the specific nutrient order: calories → total fat → saturated fat → trans fat → cholesterol → sodium → total carbohydrate → dietary fiber → total sugars → added sugars → protein → vitamin D → calcium → iron → potassium. Sub-nutrients indent under their parent; “Includes X g Added Sugars” double-indents under total sugars. The footnote — * The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice. — is mandatory text.
Layout is where hand-built labels visibly drift: bars the wrong weight, a missing indent, the wrong footnote copy. It’s also the easiest part for software to get right every time — which is exactly the argument for not doing steps 3–5 by hand.
The mistakes that actually get labels rejected
- Rounding %DV from the rounded amount instead of the analytical value (the 24%-not-23% case above).
- Stale Daily Values — sodium 2,400 mg or potassium 3,500 mg are pre-2016 numbers; the current US values are in the table above.
- Invented serving sizes that dodge the RACC to make calories look smaller. This is the first thing a reviewer checks, and it poisons every other row.
- “Less than” thresholds ignored — printing “0.7 g” of fiber when the rule says “less than 1 g.”
- Treating the panel as the whole label. The allergen “Contains” statement (FALCPA), the ingredient list in descending weight order, and any nutrient content claims (“low sodium,” “high fiber”) are separate requirements with their own rules. The panel doesn’t cover them, and neither does this guide.
If you sell supplements: 21 CFR 101.36
Supplements swap the format, not the logic. A Supplement Facts panel declares servings as a dosage form (“2 capsules”), lists dietary ingredients with their amounts and %DV where established, uses a † footnote (“Daily Value not established”) for ingredients without one, and lists proprietary blends by total blend weight with ingredients in descending order. The rounding philosophy — declared increments, unrounded inputs — carries over.
Where software earns its keep
Steps 3 through 5 are deterministic: fixed increments, fixed Daily Values, a fixed layout. That is precisely the part of the job a computer should do — and it’s what Nutrition Maker does inside your Shopify admin. Type or look up your values (steps 1–2 stay human), and the app applies every rounding rule and %DV grid above, renders the regulation layout live, saves the panel to the product, and exports a 300 DPI print-ready PNG. It’s free.
The honest limit, again: no app can verify that your numbers describe your product. Nutrition Maker formats and rounds the values you provide — it doesn’t test recipes or guarantee regulatory compliance. Have a qualified labeling expert verify the final label before printing.