How to Count Calories With ChatGPT
To count calories with ChatGPT, give it each food with its weight in grams, say whether the weight is raw or cooked, name any oil or sauce, and ask for numbers per item plus a total. Then check one line against a USDA FoodData Central value before you trust the total. The prompts below are plain text, so the same words also work in Claude.
Key takeaways
- A usable prompt has five parts: the task, each food with grams, raw or cooked, cooking fat and sauces, and a return format that lists assumptions.
- In the NutriBench study, GPT-4o and GPT-4o mini made smaller carbohydrate errors on metric descriptions ("80 g of rice") than on natural ones ("a cup of rice").
- Check one line yourself: 140 g roasted chicken breast x 165 kcal / 100 g = 231 kcal.
- Ask the same meal three times in fresh chats. In one study, repeats varied by 4.74% to 6.19% on energy.
- A chat can slip when it adds many lines. Add the day's numbers yourself once.
How do you count calories with ChatGPT?
Write the meal the way a kitchen scale would read it. "Chicken and rice" leaves the chat to guess the amount, the cooking method and the oil. "140 g roasted chicken breast, 150 g cooked white rice, 1 tsp olive oil" leaves it very little to guess. The result is still an estimate. A prompt removes guesses; it does not make the numbers exact.
What does a good base prompt look like?
Copy these five lines and replace the brackets. Each line maps to a number in the figure.
Base prompt:
Estimate the calories and macros for this meal.
Foods: [food, grams, raw or cooked]
Cooking fat and sauces: [type and amount, or none]
Return one row per item with kcal, protein g, carbs g and fat g, then a total row.
List every assumption you made. Ask me before you guess anything that changes a number a lot.
The prompt is plain text. We have not run it on any assistant, so nothing here claims a result for it. The checks below tell you whether an answer holds up.
Task: ask for numbers
"Is this a good lunch?" invites commentary. "Estimate the calories and macros" asks for a table you can check.
Food and grams: one line per food
Weigh on a kitchen scale and write the grams next to each item. If you cannot weigh something, give your own guess in grams and mark it as a guess, so the chat can carry that doubt into its assumptions.
State: raw or cooked
USDA lists raw long-grain white rice at 365 kcal per 100 g (FDC 168877) and cooked at 130 kcal per 100 g (FDC 168878). So 150 g raw is 150 x 365 / 100 = 548 kcal, and 150 g cooked is 150 x 130 / 100 = 195 kcal. The raw vs cooked guide explains why the weights differ. The white rice calories page lists both rows with cup, milliliter and 100 g amounts.
Cooking fat and sauces: the hidden part
USDA lists olive oil at 884 kcal per 100 g, and a tablespoon is 13.5 g (FDC 171413). One tablespoon is 13.5 x 884 / 100 = 119 kcal, as much as about 92 g of cooked white rice (119 / 1.30).
Return format: per item, with assumptions
One row per item lets you check each line. "Ask me before you guess" turns a silent guess into a question you can answer in five seconds.
The five fields side by side
| Field | Why it matters | Bad example | Good example |
|---|---|---|---|
| Task | Keeps the answer to numbers you can check | Is my lunch OK? | Estimate calories and macros for this meal |
| Food and grams | Amount drives the total more than any other field | a bowl of rice | 150 g white rice |
| State | Raw and cooked rice differ by about 2.8 times | 150 g rice | 150 g cooked rice |
| Fat and sauces | 1 tbsp of oil is 119 kcal | (left out) | 1 tsp olive oil |
| Return format | Per-item rows can be checked one by one | just give me the total | one row per item, list assumptions |
Do grams beat cups for ChatGPT?
For the GPT models in the NutriBench study, yes. For the other ten models the paper's own text and figure point in different directions, so the safe reading is narrower than "grams always win".
NutriBench (Hua et al., arXiv 2407.12843; the arXiv page lists ICLR 2025) holds 11,857 meal descriptions with carbohydrate, protein, fat and calorie labels. The authors compared 5,532 natural-serving descriptions, such as "a cup of rice", with the same 5,532 meals written in metric, such as "80g of rice", and scored twelve models on carbohydrate estimation. Their Figure 4 plots each model's gap in mean absolute error (MAE, grams of carbohydrate). We read the bar lengths from the published figure file, so treat the values as readings.
- GPT-4o and GPT-4o mini are the only two models drawn in blue. The paper says both "outperformed in the metric serving category" and guesses that nutrition data tied to metric servings was in the GPT training data.
- On the other ten models the paper contradicts itself. A section heading and the figure caption say natural servings are preferred by most models. The body sentence under the heading says most models have higher error with natural servings. We lean on neither reading.
| Model | Gap, g carbs | Colour in paper figure |
|---|---|---|
| GPT-4o | -2.0 | Blue |
| GPT-4o mini | -1.3 | Blue |
| Gemma2-27B | 2.8 | Orange |
| Llama3.1-405B-FP8 | 5.5 | Orange |
| Llama3.1-70B | 5.9 | Orange |
| Llama3-70B | 6.7 | Orange |
| OpenBioLLM-70B | 7.5 | Orange |
| Gemma2-9B | 8.4 | Orange |
| Qwen2-72B | 9.6 | Orange |
| Llama3-8B | 19.4 | Orange |
| Llama3.1-8B | 22.8 | Orange |
| Qwen2-7B | 24.9 | Orange |
Bars left of zero are the two GPT models, which the paper says did better on metric descriptions.
This says less about ChatGPT today than it seems, because NutriBench reports carbohydrate error, not calories. Its top result was GPT-4o with chain-of-thought prompting: 66.82% of answers within 7.5 g of the true carbohydrate value, with an MAE of 8.61 g (paper Table 3). Averaged over all twelve models, accuracy at that 7.5 g threshold was 43.24% with a plain prompt and 47.46% with chain-of-thought (paper Table 2). Here 7.5 g of carbohydrate is about 30 kcal (7.5 x 4).
The advice costs nothing, whichever way the other models lean: give grams. Hoang et al. (JAMA Netw Open 2023) also write that ChatGPT could not give reliable common household units. If all you have is a cup, convert it first with the cups to grams guide. Our base prompt is not NutriBench's chain-of-thought prompt, and we have not measured it.
What do five filled-in prompts look like?
Example answers are written by us to show the format. None is a real model output. USDA values come from the SR Legacy release of FoodData Central (April 2018, the final release of that data type), read from the USDA download on 2026-10-16.
1. A home meal with weights
Prompt to paste:
Estimate the calories and macros for this meal. Foods: chicken breast, skinless, 140 g, roasted. White rice, long-grain, 150 g, cooked. Cooking fat: 1 tsp olive oil (4.5 g). Return one row per item with kcal, protein g, carbs g and fat g, then a total row. List every assumption. Ask me before you guess anything that changes a number a lot.
Example answer, written by us to show the format, not a real model output: chicken 231 kcal, rice 195 kcal, olive oil 40 kcal. Total 466 kcal, 47.5 g protein, 42.3 g carbs, 9.9 g fat. Assumptions: skin removed, plain boiled rice, no sauce.
Worked example: checking the home meal against USDA FoodData Central.
- Chicken (FDC 171477, 165 kcal / 100 g):
140 g x 165 / 100 = 231 kcal - Rice (FDC 168878, 130 kcal / 100 g):
150 g x 130 / 100 = 195 kcal - Olive oil (FDC 171413, 884 kcal / 100 g):
4.5 g x 884 / 100 = 39.8 kcal - Total:
231 + 195 + 39.8 = 465.8 kcal
The answer's 466 kcal matches. The chicken breast calories page shows the 165 kcal roasted row and the 120 kcal raw row from the same USDA records. Protein checks too: 140 g x 31.02 / 100 = 43.4 g from chicken plus 150 g x 2.69 / 100 = 4.0 g from rice.
2. A restaurant plate with no weights
You cannot weigh a restaurant plate, so ask for a range and what drives it.
Prompt to paste:
I cannot weigh this meal. Sit-down restaurant, US portions: grilled chicken breast, a side of white rice, and a pan sauce. Give low, likely and high kcal for each item and for the total. List what drives the gap between low and high. Ask me one question if a single answer would narrow the range a lot.
Example answer, written by us to show the format, not a real model output: chicken 198 / 248 / 297 kcal, rice 260 / 325 / 390, pan sauce and fat 119 / 179 / 239. Total 577 / 752 / 926 kcal. Biggest driver: the fat in the sauce, then the rice portion.
Worked example: where the example range comes from.
- Chicken at 120, 150 and 180 g:
120 x 165 / 100 = 198, 248, 297 kcal - Rice at 200, 250 and 300 g:
200 x 130 / 100 = 260, 325, 390 kcal - Fat at 1, 1.5 and 2 tbsp, olive oil as a stand-in:
13.5 x 884 / 100 = 119, 179, 239 kcal - Width of the range:
(926 - 577) / 752 = 46%
A 46% spread is wide, and honest for a plate nobody weighed.
Is the restaurant's own number safer? Not reliably. Urban et al. (JAMA 2011;306(3):287-293) measured 269 items from 42 restaurants by bomb calorimetry. Stated and measured energy averaged 10 kcal apart (95% CI -15 to 34), yet for 50 of the 269 items (19%) the measured energy was at least 100 kcal above the stated value. An average can look fine while single dishes miss by a lot, so keep the range.
3. A packaged food with a label
Copy the label into the prompt and let the chat multiply. The label serving is set by what people customarily eat in one sitting (21 CFR 101.9(b)), which is rarely what you poured.
Prompt to paste (label values invented for this guide):
Nutrition Facts: serving size 1 cup (55 g), calories 210, total fat 3 g, total carbohydrate 43 g, protein 5 g. I ate 80 g. Calculate calories and macros for 80 g and show the multiplication. Tell me whether the label's macros fit 4 kcal per gram of protein and carbs and 9 per gram of fat within rounding.
Worked example: the arithmetic the chat should show.
- Calories:
210 x 80 / 55 = 305 kcal - Protein:
5 x 80 / 55 = 7.3 g. Carbs:43 x 80 / 55 = 62.5 g. Fat:3 x 80 / 55 = 4.4 g - Label fit:
4 x 5 + 4 x 43 + 9 x 3 = 219 kcalagainst 210 stated, 9 kcal or 4.3% above
A small gap is normal because labels round their numbers.
Under 21 CFR 101.9(g)(5), a food is deemed misbranded if the calories in a lab composite sample are more than 20 percent above the labeled value (read at Cornell LII on 2026-10-16). A label is a good input, but it does not measure the box in your hand.
4. A recipe split into servings
"Makes 6 servings" is the weak point of recipe math, because a serving is whatever you scoop. Use the weight of the finished pot: weigh the empty pot, cook, weigh again, subtract.
Prompt to paste:
Recipe, raw weights: 300 g dry lentils, 30 g olive oil, 200 g onion, 250 g carrots, water. The finished soup weighs 2,600 g without the pot. I ate 650 g. Give kcal for the whole pot, kcal per 100 g of soup, and kcal for my 650 g. Show the formula. Do not divide by a number of servings.
Worked example: USDA values, raw weights.
- Lentils (FDC 172420, 352 kcal / 100 g):
300 x 352 / 100 = 1,056 kcal - Olive oil (FDC 171413, 884):
30 x 884 / 100 = 265.2 kcal - Onion (FDC 170000, 40):
200 x 40 / 100 = 80 kcal. Carrots (FDC 170393, 41):250 x 41 / 100 = 102.5 kcal - Pot:
1,056 + 265.2 + 80 + 102.5 = 1,503.7 kcal, so1,503.7 / 2,600 x 100 = 57.8 kcal per 100 g - Your bowl:
650 x 57.8 / 100 = 376 kcal
Dividing the pot by 6 "servings" gives 1,503.7 / 6 = 251 kcal. That is 125 kcal short, a 33% undercount, because 650 g is 1.5 of the 433 g servings (2,600 / 6) the division assumes.
The finished weight is the one number only you can supply. A chat cannot know how much water boiled off.
5. Leftovers and batch cooking
Weigh the dry amount once, weigh the finished batch, and portion by grams for as many days as it lasts.
Prompt to paste:
I cooked 400 g of dry long-grain white rice. Empty pot 850 g. Pot with cooked rice 1,970 g. Work out the cooked weight, kcal per 100 g of cooked rice, and kcal for a 180 g portion. Compare kcal per 100 g with the USDA value for cooked white rice.
Worked example: the batch arithmetic.
- Cooked weight:
1,970 - 850 = 1,120 g - Batch calories (FDC 168877, 365 kcal / 100 g raw):
400 x 365 / 100 = 1,460 kcal - Per 100 g cooked:
1,460 / 1,120 x 100 = 130.4 kcal. USDA lists 130 for cooked rice (FDC 168878). - One 180 g portion:
1,460 x 180 / 1,120 = 235 kcal
The pot method and the USDA value agree within 0.3%. Leftovers work the same way: each portion has the density of the batch.
How do you run a three-run consistency test?
A chat gives slightly different answers to the same question. The test shows how much.
- Write the full prompt for one meal.
- Paste it into three fresh chats, so earlier answers cannot influence later ones.
- Write down the three totals.
- Compute the spread:
(max - min) / mean.
| Meal | Run 1 | Run 2 | Run 3 | Spread |
|---|---|---|---|---|
| A: weighed home meal | 462 | 470 | 481 | 4.0% |
| B: restaurant plate | 640 | 780 | 905 | 34.2% |
Illustrative numbers, not measured, in kcal. Meal A: mean (462 + 470 + 481) / 3 = 471, spread (481 - 462) / 471 = 4.0%. Meal B: mean (640 + 780 + 905) / 3 = 775, spread (905 - 640) / 775 = 34.2%.
For a real reference, Hoang et al. (JAMA Netw Open 2023;6(12):e2350367) asked ChatGPT-3.5 and ChatGPT-4 about 8 menus with 222 food items, five times each. The mean coefficient of variation (CV, standard deviation divided by mean) for energy was 4.74% to 6.19%. Macronutrients varied more, up to 13.02% for fat in one setting. Those models are older than today's, so read this as the size of run-to-run noise, not a current figure.
A CV and a three-run spread are different measures. For three values the expected range is about 1.693 standard deviations (our back-calculation from the NIST handbook's factor table). So a CV of 4.74% to 6.19% matches a typical spread of 8.0% to 10.5% (4.74 x 1.693, 6.19 x 1.693).
Our rule of thumb, not a published threshold and not a safe level: if the spread is above about 10% of the mean, add detail and run it again. Put in grams, raw or cooked, the oil, and what you know of the sauce.
The test has a limit. Consistent answers can be consistently wrong, as when a chat always reads rice as dry. In the Hoang study only 39.2% to 46.8% of energy values landed within 10% of the nutritionists' values. Use the three-run test for noise and the USDA check for bias. The study comparison is in can ChatGPT or Claude track calories, and the checks are in how to check an AI calorie estimate.
Where does a running total in chat go wrong?
We found no published measurement of how often chat assistants miscount a running total, so this list names failure modes to look for. It gives no rates.
The usual suspects: many lines summed in one reply, an early item dropping out of a long chat, two days blended in one thread, the same food read as raw in the morning and cooked at night, and an old total that stays after you fix a line.
Do not count on another chat knowing your day. Anthropic's help page for Claude Projects says context is not shared across chats in a project unless it is added to the project knowledge (read 2026-10-16). Paste the numbers in each time, with this prompt.
End-of-day tally prompt:
Here is my food log for [date]. Rebuild it as a table with one row per item, copying my numbers exactly. Add up the kcal, protein, carbs and fat columns and show each sum. Do not change any number I gave. If a line has no grams or no raw or cooked state, list it under "missing" instead of guessing.
Paste the log in this layout. The three example rows are the home meal from above.
| Meal and item | Grams, state | kcal | P / C / F (g) |
|---|---|---|---|
| Lunch, chicken breast | 140 g, roasted | 231 | 43.4 / 0 / 5.0 |
| Lunch, white rice | 150 g, cooked | 195 | 4.0 / 42.3 / 0.4 |
| Lunch, olive oil | 4.5 g, n/a | 40 | 0 / 0 / 4.5 |
| Day total | (rest of the day) | (sum) | (sum) |
Then add the kcal column yourself once on a calculator. If your sum and the chat's differ, ask which line it changed. That minute is the cheapest check in the workflow.
What prompt gives you a weekly average?
The trap is a missing day. Divide by 7 when you logged 6 days and the average comes out low. Say the rule in the prompt.
Weekly recap prompt:
Below are my daily totals for the last 7 days. Days marked "not logged" have no data. Compute the average kcal per logged day: add the logged days and divide by the number of logged days. Also show the sum divided by 7 and explain why it differs. Do not fill in missing days.
With 6 logged days totaling 12,850 kcal, the average per logged day is 12,850 / 6 = 2,142 kcal. Dividing by 7 gives 1,836 kcal, a week with one empty day. The reasoning is in the weekly calorie average guide.
Where does Remembite fit?
Your AI does the math. Remembite keeps the record. Last Tuesday's total in a chat means reading back through a long scroll. Remembite stores each meal your AI sends and draws your trends.
For a food it can confidently match to a USDA-based reference, Remembite compares your AI's number with that reference. If the number lands far from it, Remembite does not save it. It sends a question back to your AI, which asks you to confirm or fix it. Remembite does not calculate the numbers, and you can use every prompt in this guide without it.
The Claude connector is open now: in Claude, open Customize, then Connectors, and add https://remembite.com/mcp. Remembite works in ChatGPT (beta, via developer mode): connect Remembite to ChatGPT. The connect page has the Claude steps and the sample dashboard shows sample data with no account. Free to start. Any paid plan will be announced here before it begins. Remembite is not affiliated with OpenAI or Anthropic.
Frequently asked questions
Does this work the same in Claude?
The prompts are plain text, so you can paste them into Claude as they are. We have not tested them on any assistant, so we claim no result. Claude Projects can hold a prompt as project instructions (Anthropic help, read 2026-10-16).
Do I need a paid plan?
The prompts need only a chat box. Anthropic's help page says Projects are available to all users, including free accounts (read 2026-10-16). We could not open OpenAI's help pages that day, so we cannot confirm ChatGPT plan features. Check the limits in ChatGPT.
Can it read a photo of my meal?
It can try. In a 2025 study of ChatGPT-5 on 195 dishes (Rodriguez-Jimenez et al., Nutrients 2025;17(22):3613), the mean absolute percentage error for energy was 30.51% from the image alone and 13.92% with the image plus an ingredient list. Written detail helped. More in the ChatGPT and Claude guide.
How do I save my template?
In Claude, a project holds instructions, and Anthropic's help page says they apply to every chat in the project (read 2026-10-16). We could not open the OpenAI help pages, so we do not describe ChatGPT's options. A plain notes file with the base prompt works with any assistant.
Why do totals differ between runs?
Hoang et al. found energy CVs of 4.74% to 6.19% over five repeats and do not explain every cause. Guesses about portion, raw or cooked state and cooking fat are the ones you can remove by writing them down. See the consistency test.
To keep the numbers your AI gives you in one place, create a free account or look at the sample dashboard first.
Estimates, not medical advice. How the numbers work.
Start your own record
Create a free account with your email, then add Remembite to Claude. Want to look first? Watch Claude log a sample day, no account needed.