Appendix C — Food Composition Quick Reference
⚠️ Figures are per 100 g unless stated, rounded, and illustrative. ⚠️ Composition varies with variety, growing conditions, processing and preparation, and national food composition databases differ from each other for the same food.
⚠️ Use these for ORIENTATION — for seeing which foods are in which league — not for arithmetic that matters. For that, use your national food composition database, which is free.
⚠️ How to use this
⚠️ The purpose of this table is comparison, not accounting.
⚠️ It answers "is this a good source of protein?" and "which of these has more fibre?" — which are the questions Chapter 37's plate actually requires. ⚠️ It does not answer "exactly how much did I eat today," and Chapter 3 explains why that question is harder than it looks even with perfect tables.
⚠️ Three columns are marked because they are the ones this book kept returning to:
⚠️ FIBRE (Ch 11 — the largest gap) · ⚠️ PROTEIN per unit cost (Ch 8, Ch 32) · ⚠️ ENERGY DENSITY (Ch 22, Ch 30).
Pulses and legumes
⚠️ Cooked unless noted. The category Chapters 11, 32, 36 and 37 all independently arrive at.**
| ⚠️ Food | kcal | Protein g | ⚠️ Fibre g | ⚠️ Notes |
|---|---|---|---|---|
| ⚠️ Lentils | ~115 | ~9 | ⚠️ ~8 | ⚠️ No soaking, ~25 min. The book's best-value single food |
| Chickpeas | ~165 | ~9 | ~8 | |
| Black beans | ~130 | ~9 | ~9 | |
| Kidney beans | ~125 | ~9 | ~7 | |
| ⚠️ Baked beans | ~95 | ~5 | ~4 | ⚠️ Group 3, and perfectly reasonable (Ch 22) |
| Peas, frozen | ~80 | ~5 | ~5 | ⚠️ Nutritionally comparable to fresh (Ch 20) |
| Tofu, firm | ~145 | ~15 | ~2 | |
| Peanuts | ~570 | ~26 | ~8 | ⚠️ Energy dense and recommended |
Grains and starchy staples
| ⚠️ Food | kcal | Protein g | ⚠️ Fibre g | ⚠️ Notes |
|---|---|---|---|---|
| ⚠️ Oats, dry | ~380 | ~13 | ⚠️ ~10 | ⚠️ ~4 g fibre per typical serving |
| Brown rice, cooked | ~110 | ~2.5 | ~1.8 | |
| White rice, cooked | ~130 | ~2.7 | ~0.4 | ⚠️ The fibre difference is the point (Ch 7) |
| Wholemeal bread | ~250 | ~10 | ~7 | |
| White bread | ~265 | ~9 | ~2.5 | |
| Wholewheat pasta, cooked | ~125 | ~5 | ~4 | |
| Pasta, cooked | ~130 | ~5 | ~2 | |
| ⚠️ Potato, with skin | ~85 | ~2 | ~2 | ⚠️ Ch 7: not the villain it is made |
| Quinoa, cooked | ~120 | ~4.5 | ~3 |
⚠️ Intact vs refined is the useful distinction, not "simple vs complex" (Ch 7). ⚠️ The fibre column above is what that distinction actually consists of.
Vegetables
| ⚠️ Food | kcal | ⚠️ Fibre g | ⚠️ Notes |
|---|---|---|---|
| Broccoli | ~35 | ~2.6 | |
| ⚠️ Cabbage | ~25 | ~2.5 | ⚠️ Keeps for weeks; the cheapest vegetable in most shops (Ch 32) |
| Carrots | ~40 | ~2.8 | |
| Onions | ~40 | ~1.7 | ⚠️ The base of most cooking, and the food-parcel transformer (Ch 32 §32.9) |
| Spinach | ~25 | ~2.2 | ⚠️ Frozen is cheaper and wastes less |
| Tomatoes, tinned | ~20 | ~1 | ⚠️ Group 3; a store-cupboard staple |
| Frozen mixed vegetables | ~50 | ~3 | ⚠️ Nutritionally comparable to fresh (Ch 20 §20.15) |
| Mushrooms | ~22 | ~1 |
⚠️ Note how low the kcal column is. ⚠️ This is why vegetables look terrible in a per-calorie environmental comparison and why that comparison is an artefact (Ch 36 §36.3b).
Fruit
| ⚠️ Food | kcal | ⚠️ Fibre g | ⚠️ Notes |
|---|---|---|---|
| Apple, with skin | ~52 | ~2.4 | |
| Banana | ~90 | ~2.6 | |
| Berries | ~40–60 | ~3–6 | ⚠️ Frozen is cheaper and equivalent |
| Orange | ~47 | ~2.4 | |
| ⚠️ Fruit juice | ~45 | ⚠️ ~0.2 | ⚠️ The fibre is what was removed (Ch 18) |
| Dried fruit | ~250–300 | ~4–7 | ⚠️ Energy dense; sugars concentrated, not "added" (Ch 18) |
⚠️ The juice row is Chapter 18's argument in one line: the same sugars, the fibre gone, and the satiety with it.
Animal proteins
| ⚠️ Food | kcal | Protein g | ⚠️ Notes |
|---|---|---|---|
| Chicken breast | ~165 | ~31 | |
| ⚠️ Chicken thigh | ~180 | ~26 | ⚠️ Roughly a third the price; better in slow methods (Ch 32) |
| Eggs | ~145 | ~13 | ⚠️ ~6 g protein per egg. Ch 9's cholesterol guidance was withdrawn |
| ⚠️ Tinned sardines | ~200 | ~25 | ⚠️ Oily fish, cheap, shelf-stable (Ch 19, 32) |
| ⚠️ Tinned mackerel | ~200 | ~22 | ⚠️ Same argument |
| Salmon | ~200 | ~22 | |
| White fish | ~90 | ~20 | |
| Beef mince, lean | ~215 | ~26 | ⚠️ Highest environmental impact per unit protein (Ch 36) |
| Pork | ~240 | ~27 | |
| ⚠️ Processed meats | ~300–450 | ~15–25 | ⚠️ The category with the ✅ association (Ch 9, 26) |
Dairy and alternatives
| ⚠️ Food | kcal | Protein g | ⚠️ Notes |
|---|---|---|---|
| Milk, whole | ~64 | ~3.3 | |
| Milk, semi-skimmed | ~47 | ~3.4 | |
| Greek yoghurt, plain | ~60–100 | ~9–10 | ⚠️ The plain tub is cheaper and lower in sugar than pots (Ch 32) |
| Cheddar | ~400 | ~25 | ⚠️ Energy dense; flat glucose curve, which is not the same as good (Ch 35 §35.5) |
| ⚠️ Fortified plant milks | ~30–60 | ~0.5–3.5 | ⚠️ Check for added calcium, B12 and iodine — unfortified versions are not equivalent |
Fats, oils and nuts
| ⚠️ Food | kcal | ⚠️ Notes |
|---|---|---|
| Olive oil | ~880 | ⚠️ All oils are ~880–900 |
| Vegetable/seed oils | ~880 | ⚠️ Ch 19: the panic was unfounded |
| Butter | ~720 | |
| Almonds | ~580 | ⚠️ ~13 g fibre, ~21 g protein per 100 g |
| Walnuts | ~650 | ⚠️ Plant omega-3 (ALA) |
| Peanut butter | ~590 | ⚠️ Ch 32's cheap-protein entry |
⚠️ Cost per nutrient — the comparison that matters
From Chapter 32 §32.2. ⚠️ Ranks are robust; prices are illustrative and will be wrong for you.
| ⚠️ Cheapest per 100 kcal | ⚠️ Cheapest per 10 g protein | ⚠️ Cheapest per vegetable serving |
|---|---|---|
| Vegetable oil | ⚠️ Dried lentils, beans | ⚠️ Frozen mixed vegetables |
| Sugar | ⚠️ Eggs | Cabbage |
| White flour, rice, pasta | ⚠️ Milk, milk powder | Carrots, onions |
| Oats | ⚠️ Tinned fish | Tinned tomatoes |
| Potatoes | Peanuts | ⚠️ Frozen spinach |
| Bread | ⚠️ Chicken thighs | Root vegetables |
⚠️ THE INTERSECTION — cheap in every column: ⚠️ dried pulses, eggs, milk, tinned fish, frozen vegetables, oats, cabbage, root vegetables, tinned tomatoes, onions, peanuts, cheap cuts.
⚠️ Chapter 32 called that "not a compromise list and not a poverty list." ⚠️ Chapter 37 called it close to what it would recommend to everybody.
⚠️ Three cautions about all food composition data
⚠️ 1. Variation is larger than the tables suggest. ⚠️ Nutrient content varies with variety, soil, season, ripeness and storage — often by tens of per cent.
⚠️ 2. Preparation changes everything. ⚠️ Cooked vs raw weights differ enormously; water absorption in grains and pulses roughly triples cooked weight; and fat added in cooking is not in the table.
⚠️ 3. And declared label values are not measurements. ⚠️ Chapter 30 §30.5b: they may be calculated from ingredient databases rather than analysed, with tolerances around 20%.
⚠️ Which is why this appendix is for seeing which league a food is in, and why Chapter 3 treats precise dietary assessment as the field's largest methodological weakness.
Where to get better data
⚠️ Your national food composition database — USDA FoodData Central, McCance & Widdowson (UK), and national equivalents. ⚠️ Free, searchable, vastly more complete than this page, and updated.
⚠️ Use them when the answer matters. Use this page when you want to know whether lentils or rice has more fibre, which is most of the time.