Food photo calorie counter: what a plate photo can and cannot measure

Published: 2026-08-25 · Updated: 2026-08-25 · 7 min read

A calorie number on a phone is a model of a meal, not a bomb calorimeter reading. Cook EZ's plate-photo path segments foods, assigns USDA FoodData Central or Open Food Facts matches, then lets you drag portions until the log looks like the plate you ate. This guide is about that loop, the error bars, and the kitchen habits that make the diary less wrong.

Segment, match, then drag the slider

Photograph the plate from above when you can. Mixed bowls are harder than a composed plate with a clear protein, a starch, and a vegetable. The model proposes items: "grilled salmon, roasted potatoes, steamed broccoli." Each item gets a food match and a default gram weight. You correct the list. Remove the lemon wedge the model called a potato. Add the olive oil you saw go on the fish. Swap a generic "white rice" for the leftover biryani if that is what you actually served. Every change recomputes kcal, protein, carbohydrate, and fat.

The slider is the honest part of the product. Volume-to-gram conversion from a single photo is an estimate. A scoop of rice that looks like 150 g in a deep bowl may be 90 g. A chicken thigh with skin photographs like a chicken thigh without skin. You were there. You know if the thigh had skin, if the potatoes were cooked in oil, if you ate the sauce. Move the grams. The diary stores your edit, not the first guess.

Meal slot matters for later insights: breakfast, lunch, dinner, snack. The photo attaches to the entry. If you cook from a Cook EZ recipe and then photograph the plated serving, you can start from the recipe's per-serving nutrition and adjust, which is usually tighter than a cold identification of a mixed plate.

FoodData Central, Open Food Facts, and your pantry

USDA FoodData Central (fdc.nal.usda.gov) is the primary nutrient database for generic foods: chicken breast, cooked, roasted; rice, white, long-grain, cooked; broccoli, boiled. Those entries include water weight after cooking, which is why "100 g cooked rice" and "100 g dry rice" are different foods. Matching the right cook state is half of accuracy. Logging dry oats as cooked oatmeal undercounts by a lot because water is most of the cooked gram weight.

Packaged foods belong to Open Food Facts (world.openfoodfacts.org) or to a barcode you scan. The GTIN on a yogurt cup is a better key than a photo of the yogurt. Cook EZ caches barcode hits. Repeat scans of the same SKU should not wait on a live API. If the serving on the label is 150 g and the database serving is 170 g, believe the label in your hand. The FDA Nutrition Facts label page explains serving size, including dual-column labels on packages that might be eaten in one sitting.

Cook EZ's local food index covers search and recent items. Quick-add exists for a gram amount when you already know the food. Photo logging is for mixed plates and restaurant meals without a barcode. Choose the cheapest accurate path. A barcode is free. A photo analysis of a mixed plate uses the vision path. A generate of a new recipe is a different credit.

Where photo calories go wrong

Oil is invisible when it is absorbed. Restaurant vegetables are often finished with more fat than a steamed FoodData Central entry. If the broccoli shines, add oil. If the salmon sat in a butter pan sauce, add butter. A 30 g miss of oil is about 270 kcal, which is larger than most protein-weight errors. People argue about whether the chicken was 140 g or 160 g and ignore the tablespoon of oil. Reverse that priority.

Depth hides grams. A burrito, a stuffed pepper, a layered lasagna slice. The camera sees the top. You know the interior. Split the item into components if the first match is a generic "burrito, bean and cheese" that does not match your filling. Or weigh the plate once, tare, and save that gram habit for foods you eat often. A $15 kitchen scale plus FoodData Central will beat any photo model on repeated lunches.

Alcohol, sugar in drinks, and cooking wine rarely look like food. Log them separately. A photo of dinner will not catch the 180 ml of wine. The Dietary Guidelines for Americans discuss added sugars and alcoholic beverages as pattern issues. Your diary should include them if you want the day's energy total to mean anything.

Portion estimates that survive a restaurant

When you cannot weigh, use hand and object heuristics as a starting slider, then adjust. A deck of cards is a rough 85 g cooked meat. A cupped palm is a rough 1/2 cup of cooked grain. A thumb tip is a rough teaspoon of oil or nut butter. These are teaching tools, not lab methods. The point is to stop logging "1 serving" when the restaurant serving was 2.5 times the FoodData Central reference amount.

Cooked versus raw still trips people. FoodData Central lists both. Poultry safe temperature is 165 °F, per USDA Keep Food Safe. The cooked entry already accounts for moisture loss. If you weighed the chicken raw at 200 g and logged cooked breast at 200 g, you overcounted the cooked food (cooked weight is lower) or undercounted depending on which table you picked. Pick the state that matches how you weighed. If you did not weigh, log cooked, because that is what was on the plate.

Leftovers you reheat should still be logged as the food they are. FSIS leftover guidance is 3 to 4 days in the refrigerator, reheat to 165 °F. The calorie number does not change because you reheated. The safety does. Do not skip the reheat because the diary already "counts" the meal.

Macros alongside kcal

Protein, carbohydrate, and fat on a plate photo are the same database lookup as calories. They inherit the same oil and gram errors. If you are aiming at a protein target from the macro calculator, the slider on the chicken matters more than the slider on the lettuce. Lettuce is mostly water. The chicken is the protein. Put attention where the grams move the target.

Fiber and added sugar are often missing or weakly estimated on mixed plates. Packaged foods with a Nutrition Facts label are better here. If you care about added sugar, scan the yogurt and the cereal. Do not ask a plate photo of a smoothie bowl to split added honey from fruit sugar. The FDA label distinguishes added sugars. A generic fruit-and-granola match in FoodData Central may not.

Sodium is the worst photo estimate. Restaurant food is salty in ways a generic "stir-fry" entry will not capture. Use the diary for energy and protein trends. Use labeled products and your own salt measurement when sodium is a clinical issue. Cook EZ is not a medical device.

When to skip the camera

Scan barcodes for anything with a GTIN. Search the index for plain foods you cook often ("egg, whole, cooked, hard-boiled"). Quick-add grams if you already portioned on a scale. Photo logging shines for mixed restaurant plates, potlucks, and leftover bowls where you would otherwise skip the log entirely. A slightly wrong log you will actually complete beats a perfect protocol you abandon on Thursday.

Do not photograph other people's plates into your diary as if you ate them. Do not photograph a recipe card or a screen and expect a useful gram breakdown. Those images are the recipe-from-a-photo path, or they are junk. The calorie model wants food in a dish, with some sense of scale. A wedding buffet shot from ten feet away will invent a plate.

If you used Cook EZ to generate and cook the meal, log from the recipe and the servings-eaten control. That path uses the same FoodData Central building blocks as the card, with your scale factor. Photograph the plate for the Cook Journal if you want the heat calendar to show real food. The journal photo can be the same file as the log photo. The jobs are still different: streak and memory versus energy accounting.

A diary you will still open in week three

Log at the meal, not at midnight. Midnight logs are fiction plus snacks you forgot. The photo is a memory aid for the slider. If you wait six hours, you will guess the oil. If you log while the plate is in front of you, you will remember the extra toast.

Repeat meals should become recent-item taps, not new photo analyses. Tuesday's oatmeal can be Friday's oatmeal without another vision call. Save a custom food if your usual bowl is 60 g dry oats, 200 g milk, 15 g peanut butter. That custom food is more accurate than a new photo every time.

Use the calorie calculator on this site to set a TDEE-based target if you want one. Mifflin-St Jeor is the equation behind many of those calculators (PubMed 2305711). The diary then compares intake to that target. The photo counter is the intake instrument. The calculator is the budget. Confusing them makes people think the camera is "wrong" when their target was a screenshot from a stranger's story.

Photograph tonight's plate from above, delete the garnish the model invented, and drag the oil until the shine matches what you saw go into the pan. Then eat. The diary can wait thirty seconds. The fond cannot.

Questions

How accurate is a plate photo?

It is a starting estimate. Oil and hidden depth are the usual misses. Correct grams with the slider. Weigh repeat meals when you can. Barcodes beat photos for packaged food.

Which database do the numbers come from?

Generic foods from USDA FoodData Central. Packaged products from Open Food Facts and barcode cache. Your edits override the first match.

Is barcode logging free?

Yes. Scanning a package into the diary does not use a recipe-generate credit. Mixed-plate photo analysis is a separate vision path.

Should I log leftovers when I reheat them?

Log the food you eat. Reheat leftovers to 165 °F and use them within 3 to 4 days per FSIS. Reheating does not change the calorie math.

Sources

Cook it in Cook EZ

Photograph the dish or type the name. The app writes the recipe for your allergies, equipment, and time, then logs the plate if you want the calories.