cat cooked-weight-and-recipes.md
Cooked Weight: Why Your Soup Lies and How to Count It Honestly
The rule everything follows from
Cooking changes weight, not calories. Water moves in and out of food; energy doesn’t. 80 g of dry rice carries 288 kcal whether it’s sitting in the bag or swollen into a bowl of cooked rice three times heavier.
Food databases — labels, Open Food Facts, most entries you’ll find anywhere — list values for the product as sold: dry rice, raw chicken, raw potato. You eat the cooked version, which weighs something completely different. Every dishonest number in a food diary that isn’t a forgotten snack comes from mixing these two states up.
The mistake goes in both directions, which is what makes it nasty.
Rice: the 2.75x mistake
80 g of dry rice (360 kcal/100 g) = 288 kcal. Cooked, it absorbs water and becomes about 220 g.
Now you weigh your plate — 220 g — and log it against the dry rice database entry: 220 × 3.6 = 792 kcal. You just logged 504 kcal that don’t exist. Do that daily and your diary says you’re overeating while you’re actually in a deficit — the classic “I eat 1,800 and don’t lose… wait, why don’t I lose more?” in reverse: you quit a working diet because the log looks broken.
Same trap: pasta (~2.4x), buckwheat (~3x), oatmeal (~2.5x), lentils (~2.5x).
Meat: the same mistake, mirrored
200 g of raw chicken breast (120 kcal/100 g) = 240 kcal. In the pan it loses about a quarter of its weight as water and comes out at ~150 g.
Weigh the cooked piece, log 150 g against the raw entry: 180 kcal. Now you’ve undercounted by 60 kcal. One chicken breast — fine. Meat three times a day, every day — that’s 150–200 phantom kcal, roughly half of a modest cut’s daily deficit, quietly missing from the log.
Grains logged cooked-as-raw inflate the diary; meat logged cooked-as-raw deflates it. People routinely make both mistakes at once and get a diary that’s confidently wrong in a direction nobody can determine.
Soup: both problems at once, worked through
A pot of chicken soup:
| Ingredient (raw) | Weight | kcal |
|---|---|---|
| Potatoes | 300 g | 231 |
| Carrots | 200 g | 82 |
| Chicken thigh | 400 g | 476 |
| Oil | 15 g | 133 |
| Total | 915 g | 922 |
Plus 1.4 L of water, then 40 minutes of simmering boils some of it off. The finished pot weighs 2,100 g.
The honest math: 922 kcal / 2,100 g = 44 kcal per 100 g. Your 400 g bowl = 176 kcal.
The naive math — dividing by the 915 g of raw ingredients because nobody weighed the pot — gives 101 kcal/100 g, and the same bowl logs as 403 kcal. That’s 2.3x too high, +227 kcal on one bowl of soup. Two bowls and you’ve invented a meal that never happened. This is why soup “lies”: the calories are real, but they’re diluted across a mass that’s mostly water, and the dilution factor is unknowable without weighing.
The honest method, start to finish
- Build the recipe from raw weights. Weigh ingredients before they hit the pot, while the labels still apply.
- Weigh the finished dish. Pot minus empty pot. (Weigh your empty pots once and write the number on the bottom with a marker — genuinely the highest-ROI kitchen habit in this whole post.)
- Divide: total kcal / cooked grams = honest per-100 g for this batch.
- Weigh your portion and log that many grams of the dish.
In Calsheet this is the recipe feature doing its job: add ingredients by raw weight, per-100 g nutrition is computed automatically, and the optional “Cooked weight, g” field is exactly step 2 — enter what the pot weighed and every portion is scaled against the finished mass, not the raw sum. Portion math scales from the raw totals in one step, so rounding doesn’t compound across the per-100 g intermediate. Leave the field empty for dishes that don’t change mass much (salads, casseroles eaten same-day) and the ingredient sum is used.
One nice property: entries you’ve already logged keep their values even if you later edit or delete the recipe. Last month’s soup stays last month’s soup.
Where the numbers still drift
Honesty about the residual error:
- Rendered fat you discard. Draining ground beef or bacon fat throws away calories the recipe counted. You’ll overcount slightly; the log errs safe.
- Evaporation continues. Yesterday’s soup, reheated, weighs a bit less; the per-100 g crept up a few percent. Weigh the portion and accept it.
- The raw values themselves are ±10%. Open Food Facts is a community database; a potato is not a lab standard.
None of this matters much, and here’s the reframe that makes the whole topic manageable: a consistent ±10% error barely disturbs weekly-average math — you calibrate your budget against your own trend anyway. The cooked-weight mistakes above are different: they’re 2–3x errors that point in unknown directions. Fix those; forgive the rest.
TL;DR
- Cooking moves water, not calories. Databases describe raw; you eat cooked.
- Grains logged cooked against raw entries overcount ~2.5–3x. Meat undercounts ~25%. Soup can overcount 2x+ if divided by raw ingredient weight.
- Method: raw weights in, weigh the finished pot, divide, weigh the portion.
- In Calsheet: recipe + the optional cooked-weight field does the division for you; portions scale against the finished mass.
- Chase the 2x errors, tolerate the ±10% ones — consistency beats precision in a food diary.