The same chicken breast can read 180 calories or 250 calories on your log, and the only thing that changed is whether you weighed it before or after it hit the pan. That one ambiguity is the most common reason a careful, honest food log still misses by 200 calories a day.
The problem starts with units. Cooking moves water in or out of a food, which changes how many grams sit on your scale without changing the calories inside. Get the state right and most of the drift disappears. Get it wrong on chicken, rice, and pasta every day and you build a fake deficit or a fake surplus that no amount of willpower will fix.
01Cooking moves water and fat, not calories
A calorie is energy stored in protein, carbohydrate, fat, and alcohol. Heat does not destroy that energy. What heat does is push water out of muscle fibers and let some fat render and drip into the pan. The food gets lighter, but the protein and most of the calories stay put.
The U.S. Department of Agriculture defines cooking yield as the cooked weight divided by the raw weight, expressed as a percent.1 Its yield table reports a 72% cooked yield for a generic broiler-fryer chicken breast with meat and skin, baked or roasted. The same calories now occupy less weight, which is why cooked chicken reads denser per gram than raw. Raw breast lands near 120 calories per 100 grams. Roasted breast climbs to about 165 calories per 100 grams with around 31 grams of protein because the chicken lost water.2
Grains and legumes run the opposite direction. Dry rice and pasta absorb water as they cook and gain weight, so each gram of the cooked food carries fewer calories than the dry version. White rice is about 365 calories per 100 grams dry and roughly 130 calories per 100 grams cooked because water was added.2 That is why cooked grains feel so much more filling per calorie than their dry weight suggests.
02The rule that prevents most of the damage
Weigh the food and log it in the same state. Match the database entry to what your scale actually measured. If the scale saw raw chicken, the entry says raw. If it saw cooked rice, the entry says cooked. That single habit closes the largest gap in most logs, and it matters more than chasing the last gram of precision on vegetables.
The reason this goes wrong so often is that the search bar makes it easy. Type "chicken breast" and the app returns raw entries, roasted entries, grilled entries, and brand entries stacked together. The names all look familiar enough to tap. The numbers behind them differ by a third. Picking the right database entry is the upstream version of this problem, and raw versus cooked is the version that hits the foods you eat every single day.
03How much weight foods gain or lose
Proteins shed water and some fat when they cook, so cooked weight is lower than raw and calories per gram rise. The leaner the cut, the smaller the swing. Fatty cuts lose more because rendered fat leaves the food.
| Food (cooking method) | Cooked weight vs raw | Raw, kcal/100g | Cooked, kcal/100g |
|---|---|---|---|
| Chicken breast, meat only (roasted) | ~72% USDA breast-with-skin roast benchmark | 120 | 165 |
| Chicken breast, skinless boneless (grilled) | method-dependent | 120 | 151 |
| Ground beef 90/10 crumbles (pan-browned) | 69% | 176 | 230 |
| Ground beef 80/20 crumbles (pan-browned) | ~67% USDA medium-fat crumble benchmark | 254 | 272 |
| Sirloin steak (broiled) | ~70 to 75% | ~150 | ~210 |
| Salmon fillet (baked) | ~80 to 85% | ~180 | ~210 |
| Bacon (pan-fried) | ~30 to 40% | ~400 | ~540 |
Starches and legumes absorb water and gain weight, so cooked weight is much higher than dry and calories per gram fall. The exact multiple depends on how much water you add and how long it simmers, which is the reason dry entries are steadier than cooked ones.
| Food | Cooked weight vs dry | Dry, kcal/100g | Cooked, kcal/100g |
|---|---|---|---|
| White rice | ~2.7 to 3x | ~365 | ~130 |
| Brown rice | ~2.7 to 3x | ~370 | ~123 |
| Pasta (semolina) | ~2.2 to 2.5x | ~371 | ~157 |
| Rolled oats | ~3 to 4x | ~389 | ~70 to 90 |
| Dry lentils | ~2.5 to 3x | ~352 | ~115 |
| Black beans | ~2.3 to 2.5x | ~341 | ~132 |
The protein numbers move with the calories. Cooked chicken breast reads about 31 grams of protein per 100 grams against 22 to 23 grams raw, for the same reason the calories rise. Less water, same protein, denser per gram. Per-meal protein math from the leucine threshold assumes you are counting the protein you actually ate, so the state you weigh in decides whether your 40-gram target was real or 10 grams short.
04Which direction the error runs
Knowing the size of the swing is useful. Knowing which way it pushes your log is what lets you catch it. The mistake is rarely random. It bends your totals in a predictable direction depending on the food.
| You put on the scale | You tapped this entry | What happens to the log | Size of the miss |
|---|---|---|---|
| Cooked meat | A raw entry | Undercounts that food | ~25 to 30% low |
| Raw meat | A cooked entry | Overcounts that food | ~25 to 30% high |
| Cooked rice or pasta | A dry entry | Overcounts hard | roughly 2.5 to 3x high |
| Dry rice or pasta | A cooked entry | Undercounts hard | ~60% low |
Work a real example. You plate 150 grams of cooked chicken and log it against a raw entry at 120 calories per 100 grams. The log says 180 calories. You actually ate about 247. That is 67 calories hidden on one portion, repeated across most days of the week. The grain version is louder. Tap a dry rice entry for 250 grams of cooked rice and the log shows more than 900 calories for something closer to 325. People usually catch that one because it looks absurd. The quiet meat undercount is the one that builds a stall while the log looks clean.
05Why raw and dry is the safer default
Either state can be correct as long as you stay consistent, but raw and dry entries are more standardized. Cooking introduces a variable the database cannot see. Grilled, boiled, baked, and pan-fried all end at different final water contents, so a cooked entry assumes a yield that may not match your kitchen. Boiled chicken holds more water than grilled chicken. Pasta cooked al dente weighs less than pasta cooked soft. Raw and dry weights skip that variable entirely, which is why they make the cleaner default for accurate calorie counting.
There is one honest exception. Fatty meat that you cook and drain loses fat to the pan, and a raw entry counts fat you poured down the sink. Brown 100 grams of raw 80/20 beef into pan-browned crumbles, and the USDA medium-fat ground-beef crumble row puts the cooked yield near 67 grams. That cooked yield holds roughly 12 grams of fat total, down from 20 grams in the raw entry.2 For that food, weighing the drained cooked product against a cooked-and-drained entry is the more honest number. For lean cuts the rendered fat is small and the raw default wins on consistency.
06The batch cooking yield-factor method
Meal prep breaks the weigh-it-raw rule because you cook a kilogram at once and portion it cold later, long after the raw weight is gone. Estimating the yield reintroduces the error you were trying to avoid. The fix is to measure it once.
Weigh the entire batch raw and log its total macros from a raw entry. Cook it. Weigh the whole batch again. Now you have the exact raw macros and the exact cooked weight, so you can build a per-gram value for the cooked food and portion by the scale from there.
A worked version. You roast 1,000 grams of raw chicken breast, which carries about 1,200 calories and 225 grams of protein. It comes out of the oven at 720 grams. Divide the macros by the cooked weight and every gram of that batch is 1.67 calories and 0.31 grams of protein. A 200-gram cooked portion is then 333 calories and 62 grams of protein, with no guessing the yield. Save that custom entry and reuse it for the rest of the batch. This is the move that makes Costco-style bulk meal prep trackable and is worth building into your bulk-cooking routine.
07When you cannot weigh raw at all
Restaurants, shared meals, and food someone else cooked leave you with only the cooked plate. You cannot recover the raw weight, so the goal shifts from precision to avoiding a systematic miss. Use a verified cooked entry, lean toward the higher-fat preparation when a dish looks rich, and accept a wider error band for that meal. The conservative-proxy logic for restaurant and takeout logging applies directly here.
For your own kitchen, the durable fix is small. Pick one state per staple food, weigh it that way every time, and save a corrected default so you stop re-searching the same uncertain entry each week. A food scale and a consistent state turn the two foods that wreck most logs, meat and grains, into the two you no longer have to think about. The log goes quiet, the trend gets readable, and you can spend your attention on the recurring mistakes that actually move the weekly total.
Footnotes
U.S. Department of Agriculture, Agricultural Research Service. USDA Table of Cooking Yields for Meat and Poultry, Release 2. Nutrient Data Laboratory, 2014. Yield (%) = 100 × (cooked weight / raw weight). Yield rows used here include chicken broiler-fryer breast, meat and skin, baked or roasted, unspecified, 72%, beef ground low fat crumbles, pan-fried, 69%, and beef ground medium fat crumbles, pan-fried, 67%.
↩U.S. Department of Agriculture, Agricultural Research Service. FoodData Central SR Legacy. Values per 100 grams from these records: chicken broiler or fryer breast, skinless, boneless, meat only, raw, FDC 171077, chicken broiler or fryer breast, meat only, cooked, roasted, FDC 171477, chicken broiler or fryer breast, skinless, boneless, meat only, cooked, grilled, FDC 171534, ground beef 90% lean raw FDC 174030, ground beef 90% lean pan-browned crumbles FDC 171794, ground beef 80% lean raw FDC 174036, ground beef 80% lean pan-browned crumbles FDC 171799, white rice dry FDC 168877, white rice cooked FDC 169757, dry pasta FDC 168927, cooked pasta FDC 168928, lentils raw FDC 172420, lentils cooked FDC 172421, black beans raw FDC 173734, and black beans cooked FDC 173735. The 72% chicken yield in the table is a separate USDA breast-with-skin roast benchmark from the cooking-yield table. fdc.nal.usda.gov
↩
