Your macros don't add up to your calories because protein × 4 + carbohydrate × 4 + fat × 9 is an approximation, and the calorie line on a label is usually a different, closer approximation. The two rarely agree to the calorie. A gap of a few percent per food is normal, and over a day of logging it can reach a hundred calories or more.

This is arithmetic, not a trial result. The article walks through each source of the gap and ends with the practical answer: which number to log.

General versus specific Atwater factors

The 4 / 4 / 9 numbers are the Atwater general factors — average energy values per gram for protein, carbohydrate and fat across a mixed diet, with 7 for alcohol.1 They are convenient and they are what most calculators, including ours, use to turn macro grams back into calories.

Real foods do not sit on the average. The Atwater specific factor system, introduced in 1955, assigns each food group its own values; for protein alone they range from about 2.44 kcal/g for some vegetable proteins to 4.36 kcal/g for eggs.1 The research lead behind this article quotes comparable spreads for carbohydrate (roughly 1.33–4.16) and fat (roughly 8.37–9.02). A label built on specific factors — or on a measured energy value — will therefore disagree with your 4/4/9 arithmetic in a direction and by an amount that depends on the food.

Energy sourceGeneral factorSpecific-factor range (protein per FAO; others per research lead)
Protein4 kcal/g≈ 2.44–4.36
Carbohydrate4 kcal/g≈ 1.33–4.16
Fat9 kcal/g≈ 8.37–9.02
Alcohol7 kcal/g
Dietary fibre(inside carbohydrate)≈ 2.0
Sugar alcohols (polyols)(inside carbohydrate)≈ 2.4

In plain terms: 4/4/9 is a ruler marked in whole centimetres; the label may have been measured in millimetres.

Fibre, sugar alcohols and alcohol

Three things sit inside or beside the carbohydrate line and break the × 4 rule.

Fibre is included in total carbohydrate on most labels but is assigned about 2 kcal/g.1 A food with 30 g carbohydrate of which 10 g is fibre carries about 100 kcal from carbohydrate, not 120. Over a high-fibre day the shortfall is easily 50–80 kcal.

Sugar alcohols (polyols such as erythritol, xylitol, maltitol) are also listed under carbohydrate and are assigned about 2.4 kcal/g in the FAO system.1 "Sugar-free" products can show carb grams far above what their calorie line implies for this reason.

Alcohol is the reverse case: 7 kcal/g that appears in the calorie total but under none of the three macro headings. A drink logged from a database can show 98 kcal with 0 g protein, 0 g fat and a few grams of carbohydrate — the arithmetic is short by the alcohol. Calories in alcohol explains how to log it.

Label rounding

Labels round grams and calories separately, and the rounding does not cancel. If a label rounds macros to the nearest gram, a printed 3 g of fat may be anything from 2.5 to 3.49 g — a spread of 9 kcal on that line alone. Calories are typically rounded to the nearest 5 or 10. Small serving sizes make it worse: a 0.4 g fat serving prints as 0 g and disappears from the arithmetic entirely, while its calories may still be in the total.

Multiply a handful of these across the fifteen or twenty items in a day and the macro-derived total can miss the label-derived total by 3–5% with nothing wrong anywhere.

Which number to trust

Log the calorie line the label prints, and log the macro grams the label prints, and do not recompute one from the other. The printed calorie value is either measured or built with better factors than 4/4/9; the macro grams are what you need for protein, fat and carbohydrate targets. Treat P × 4 + C × 4 + F × 9 as a cross-check that should land within a few percent, and stop worrying when it does.

What matters for an adaptive tracker is consistency, not perfection. If your logging is short by the same few percent every day, the expenditure estimate absorbs it, because it is derived from logged intake against the weight trend. A gap that is stable is priced in; a gap that changes day to day is the one to fix.

In plain terms: the label's calories and the label's grams are both right for what they measure. The arithmetic between them is the approximation.

The short version

4 / 4 / 9 are averages; real foods carry specific energy values that differ from them, and fibre (≈ 2), sugar alcohols (≈ 2.4) and alcohol (7 kcal/g) sit outside the rule.1 Add label rounding and a few percent of daily mismatch is normal. Log the calorie line and the gram lines as printed, and let the macro calculator set targets in grams — it never asks the macros to sum to the calories.

Educational overview only — not medical advice. Zyra is a training and nutrition tracking tool; the numbers here are the algorithm's rules and published reference values, not an individual prescription.