CalEye.
Blog · diabetes May 1, 2026 8 min read

Carb counting 101 — without the spreadsheet

A slice of sourdough being cut on a marble board

Most carb-counting tools fail before lunch on the first day. The spreadsheet route — keep a running log, cross-reference a lookup table, manually estimate the portion — takes two minutes per meal when everything goes right. It never goes right. The lookup table doesn’t list the restaurant’s house rice. The portion is ambiguous. The friction exceeds the perceived benefit, and the habit collapses in under a week. That’s not a willpower failure. That’s a design failure.

The ADA recommends carbohydrate counting as a first-line strategy for glycaemic control. What it doesn’t specify is how patients are supposed to source those carb figures reliably at 7 a.m. or mid-lunch at a Thai restaurant. Traditional methods assume access to a nutrition label or a known restaurant with published macros. Remove either of those and accuracy plummets to educated guessing, which defeats the clinical purpose.

CalEye’s approach collapses the lookup into a single step: photograph the plate, receive grams of carbohydrate, see glycaemic load, trace the figure back to its USDA FoodData Central source. No spreadsheet. No manual table lookup. The estimate is explicit about its confidence range, not a false-precision integer. That honesty matters for diabetes management — a range of 38–44 g carb is more actionable than a spuriously exact 41 g with no sourcing.

What carb counting actually is

Carbohydrates are the macronutrient that most directly raises blood glucose. When you eat carbs, your digestive system breaks them into glucose, which enters the bloodstream. In people without diabetes, the pancreas responds by releasing insulin in proportion to the glucose load. That insulin clears glucose into cells, and blood sugar returns to baseline within one to two hours.

In Type 1 diabetes, the pancreas produces no insulin. The person must inject or infuse it externally. In Type 2 diabetes, cells have become resistant to insulin’s signal, and the pancreas may eventually lose the capacity to compensate. Either way, the relationship between dietary carbohydrate and blood glucose is more direct and more consequential than it is in people with normal pancreatic function.

Carb counting exploits that relationship. If you know how many grams of carbohydrate you’re about to eat, and you know your insulin-to-carb ratio (ICR) — typically expressed as “1 unit of rapid-acting insulin covers X grams of carbohydrate” — you can calculate a mealtime insulin dose before you eat. This is the basis of intensive insulin therapy for Type 1 diabetes, and it underpins the ADA’s recommendation of Medical Nutrition Therapy for Type 2 patients as well.1

The glycaemic response to carbohydrate isn’t uniform. Glucose-equivalent carbohydrates from white bread spike blood sugar faster than the same gram-quantity from lentils, because lentils contain fiber and resistant starch that slow digestion. Glycaemic index (GI) and glycaemic load (GL) are attempts to capture this variability. Carb counting in grams is the clinical standard, however — it’s measurable, communicable, and actionable in a way that GI alone is not. GL, which multiplies GI by gram-quantity and divides by 100, is the more practically useful of the two and is increasingly used alongside gram counts in diabetes self-management education.2

The ADA standard method

The American Diabetes Association has published Exchange Lists since the 1950s, originally developed jointly with the Academy of Nutrition and Dietetics. An “exchange” is a standardized serving of food that contains a fixed carbohydrate load — one starch exchange, for example, is 15 g carb. A meal plan might call for three starch exchanges at breakfast, meaning 45 g of carbohydrate, regardless of which specific starch foods you choose.1

The exchange-list system is pedagogically coherent. It groups foods so that patients learn approximate equivalences — a slice of bread, a small potato, a third of a cup of cooked rice are all roughly one starch exchange. The clinical intent is to give patients a mental model they can apply without a calculator.

Modern ADA guidance has shifted toward direct gram-counting rather than exchange units, partly because it’s more precise and partly because nutrition labels in most countries now report total carbohydrate in grams per serving. The label-reading workflow is: check the serving size stated on the label, note the total carbohydrate grams for that serving, estimate how much of that serving you’re actually eating, and scale accordingly.1

For packaged foods with reliable labels, this works. The method assumes two things that are frequently untrue in practice: first, that the food has a nutrition label; second, that the stated serving size bears some resemblance to the portion you’re eating. Restaurant portions routinely diverge from label data by 20–30% even for chain restaurants that publish nutritional information — and chains represent a minority of where people actually eat.3

Even for home-cooked meals without labels, the gram-counting method requires either weighing ingredients on a kitchen scale and applying USDA database values, or estimating portion volumes and applying density conversions. Both approaches are accurate if followed correctly. The question is whether they’re followed at all.

Why the spreadsheet approach fails

Adherence to structured self-monitoring in diabetes is poor across all methods. A systematic review published in Diabetes Care found that self-reported dietary intake in people with diabetes was accurate in only 40–60% of cases, with underreporting of calorie-dense foods being the most common error.3 Carbohydrate-specific underreporting tends to be smaller in magnitude than overall calorie underreporting, but it persists.

The friction problem is the root cause. Manual carb logging requires three distinct cognitive steps: identify the food, find a reliable gram-per-carb reference, estimate the portion. Each step introduces a point of failure. The lookup — whether it’s a paper exchange list, a database app, or a mental rule-of-thumb — fails most visibly when the food is novel or composite. A restaurant curry, a homemade biryani, a grandmother’s dal — none of these appear as discrete line items in a database.

Restaurant meals are the clearest failure mode. A study of 269 meals at sit-down restaurants found that 19% of measured calorie counts differed from menu-stated values by more than 100 kcal, and some differed by 400–500 kcal.4 Carbohydrate divergence follows a similar pattern. When patients cannot trust the listed figure, they either skip the log entry, apply a rough estimate with high uncertainty, or default to an exchange-unit average that may be well off from the actual plate.

The psychological cost of repeated approximation compounds the adherence problem. Patients who know their estimates are unreliable become less motivated to log at all. A meal diary that is 60% accurate and 40% guessed is not a clinical management tool — it’s a record of effort without reliable signal. The design of the logging task needs to reduce the cost of accurate entry, not merely incentivize effort.

The photo approach — with CalEye as a worked example

Photography changes the data-entry paradigm. Instead of navigating a database and estimating a portion, the patient photographs the plate. The image already contains portion geometry, food color and texture, plate diameter as a scale reference, and visual overlap patterns between dishes. A computer vision model trained on food images can use these cues to identify food items, estimate portion volumes, and apply density conversions to arrive at mass estimates.

CalEye’s workflow is this: point camera at the plate, tap to capture, receive a breakdown within seconds. Each identified food item is listed with its estimated gram weight, carbohydrate content in grams, and a glycaemic load figure. Critically, each item is linked to its underlying USDA FoodData Central reference — not a black-box number, but a traceable source. The estimate includes a confidence interval: “chapati (wholewheat, medium): 40 g portion, 18 g carb (±2 g).“5

The confidence interval matters. It acknowledges what a photograph cannot resolve — the exact hydration state of cooked rice, whether a curry sauce is thickened with flour or cornstarch, whether the dal has a tablespoon of ghee stirred in. These uncertainties are real. Surfacing them is more honest, and more clinically useful, than suppressing them behind a rounded integer.

The mechanism underlying this is multi-stage. Object detection identifies the food regions. Volume estimation uses depth cues and a plate-size prior. Gram estimates are derived from reference density values. Carbohydrate per gram comes from USDA SR-Legacy or FoodData Central. The chain from pixel to gram of carb is explicit and auditable — a clinician can see which USDA item was matched and flag a mismatch.

For commonly photographed meals — rice, bread, lentils, vegetables — the model is reasonably calibrated. The limitation is unusual or highly composite dishes where the model has seen few training examples. CalEye surfaces an explicit uncertainty flag in those cases rather than producing a confident but poorly grounded estimate.

A worked example: a typical north Indian lunch

Take a common mid-day meal: two chapatis, a bowl of dal, a small serving of sabzi (vegetable curry), half a cup of cooked rice, and a small bowl of raita. This is a nutritionally balanced meal by most standards. It’s also a realistic carb-counting challenge — five distinct components, no nutrition label, and a carbohydrate load that spans a wide range depending on exact portions.

Two wholewheat chapatis — a medium chapati weighs approximately 40 g after cooking. Wholewheat chapati (cooked) contains approximately 44 g carbohydrate per 100 g.5 Two chapatis at 40 g each: 80 g total weight, 35 g carbohydrate. The fiber content is around 5 g, giving net digestible carb of approximately 30 g if your endocrinologist or educator uses net carb counting.

Dal (cooked red lentils) — a 150 g bowl of cooked red lentil dal contains approximately 20 g carbohydrate per 100 g cooked weight.5 150 g portion: 30 g carbohydrate. If the dal has added tomato or onion, the difference is small — 1–2 g carb at most. Lentil dal has a relatively low GI (approximately 25–30) because of its high fiber and resistant starch content, meaning its glycaemic impact is moderated relative to an equivalent gram-count of white rice.

Sabzi (mixed vegetable curry) — the carbohydrate content varies by vegetable. A 100 g serving of mixed sabzi with potato would contribute significantly more carb than one made with spinach or cauliflower. A potato-containing sabzi at 150 g might contribute 15–20 g carb. A potato-free version might contribute 5–8 g. This is the highest-variance item in the meal and the one where a photograph-based estimate earns its value — the model can identify whether potato is present and adjust accordingly.

Cooked white rice (half cup, approximately 90 g) — white rice cooked contains 28 g carbohydrate per 100 g.5 A 90 g portion: approximately 25 g carbohydrate. This is among the highest-GI foods in the meal (GI approximately 70–80 for white rice), meaning its glucose spike is proportionally faster than the chapati or dal.

Raita (yogurt with cucumber, 100 g) — plain low-fat yogurt contains approximately 6–8 g carbohydrate per 100 g. A 100 g raita portion contributes around 5–7 g carbohydrate, almost entirely as lactose.

Meal total (potato-containing sabzi): 35 + 30 + 18 + 25 + 6 = 114 g carbohydrate. With a typical ICR of 1 unit per 10 g carb, this meal would require approximately 11 units of rapid-acting insulin at mealtime — before accounting for any glucose correction. Manual estimation of this meal without a tool would almost certainly undercount the rice and dal and miss the potato contribution to the sabzi. A typical rough estimate might land at 80–90 g, which at an ICR of 1:10 represents an underestimate of 2–3 units — clinically meaningful.

Limitations and caveats

Carb counting in grams is necessary but not sufficient for glycaemic management. Several physiological variables affect how a given carbohydrate load translates into blood glucose response, and no carb-counting tool — manual or AI-assisted — can fully account for all of them.

Insulin resistance variability. ICR is not fixed. Illness, stress, hormonal cycles, physical activity, and medication changes all affect how much a unit of insulin drops blood glucose. A patient who calibrated their ICR during a sedentary period may find it shifts substantially after starting a walking routine. Regular ICR recalibration with a diabetes care team is essential, and carb-count accuracy is only as useful as the ICR it feeds into.1

The dawn phenomenon. Many people with diabetes experience elevated fasting glucose in the early morning hours, driven by overnight cortisol and growth hormone release that promotes hepatic glucose production. This means that a breakfast of 40 g carb may produce a larger glucose excursion than the same 40 g eaten at lunch, independent of the carb count. Some patients require different ICRs at different times of day, which is only identifiable through systematic continuous glucose monitoring (CGM) data analysis.2

Fat and protein effects. Fat slows gastric emptying, which delays glucose absorption. A high-fat meal — a puri bhaji with extra ghee, a biriyani with fatty meat — will produce a slower, more prolonged glucose rise than the same carb count in a lower-fat meal. Protein has a secondary glucogenic effect in some patients, particularly those with Type 2 diabetes and high protein intake. These effects are not captured by carb counts alone. Some advanced Type 1 patients use extended bolus delivery or “dual-wave” dosing strategies to address this, but the calculation requires CGM feedback and is beyond first-line carb counting.6

Fiber’s moderating effect. Dietary fiber slows digestion and reduces the rate of glucose absorption. High-fiber foods like lentils, whole grains, and vegetables produce blunted glycaemic responses compared to their total carb count would predict. Whether to count total carbohydrate or net carbohydrate (total minus fiber) is a question your diabetes educator should answer for your specific ICR and management goals — there is no universal correct answer, and using net carb counting without adjusting your ICR can lead to under-dosing.

What to ask your endocrinologist

Go to your next appointment with specific numbers. Ask:

“What is my current insulin-to-carb ratio, and does it change across mealtimes?” Knowing whether your breakfast ICR differs from your dinner ICR is immediately actionable.

“Should I be counting total carbohydrate or net carbohydrate?” The answer depends on your medication regimen and how you currently calibrate your dosing.

“How much glucose excursion is acceptable at two hours post-meal?” This sets the standard against which your carb-counting accuracy is actually evaluated.

“Can we review my CGM data from the past two weeks alongside my carb logs?” Pattern-matching between logged carb intake and CGM traces is the most direct way to identify whether your counts are systematically off in one direction.

Carb counting is a tool — and understanding what your A1C means alongside your carb log gives your care team the full picture. The endocrinologist and diabetes care team interpret the output. Accurate counts without clinical context are not a management strategy — they’re data waiting for interpretation.

Conclusion

Carb counting works when the data is accurate and the friction is low enough to sustain. Manual methods break at the point where the food isn’t labeled and the portion isn’t standard — which describes most of what people actually eat. A photograph-based approach lowers the activation energy for accurate logging without asking for a new behavior. You’re already looking at your plate. The tool just reads it with you. The carbohydrate gram is still what matters. The spreadsheet was never the point.

References

  1. American Diabetes Association Professional Practice Committee. “Facilitating Positive Health Behaviors and Well-being to Improve Health Outcomes: Standards of Care in Diabetes—2024.” Diabetes Care 47, Supplement 1 (2024): S77–S110. Section 5 (Medical Nutrition Therapy and Weight Management).

  2. Sheard NF, Clark NG, Brand-Miller JC, et al. “Dietary Carbohydrate (Amount and Type) in the Prevention and Management of Diabetes.” Diabetes Care 27, no. 9 (2004): 2266–2271.

  3. Dworatzek PDN, Arcudi K, Gougeon R, et al. “Nutrition Therapy.” Canadian Journal of Diabetes 37, Supplement 1 (2013): S45–S55. (Systematic review data on dietary self-report accuracy in diabetes management.)

  4. Urban LE, McCrory MA, Dallal GE, et al. “Accuracy of Stated Energy Contents of Restaurant Foods.” JAMA 306, no. 3 (2011): 287–293.

  5. U.S. Department of Agriculture, Agricultural Research Service. FoodData Central / USDA SR-Legacy. Accessed 2024. Key reference items: FoodID 20445 (white rice, cooked); wholewheat chapati (cooked); red lentils (cooked). https://fdc.nal.usda.gov/

  6. Wolpert HA, Atakov-Castillo A, Smith SA, Steil GM. “Dietary Fat Acutely Increases Glucose Concentrations and Insulin Requirements in Patients with Type 1 Diabetes.” Diabetes Care 36, no. 4 (2013): 810–816.

Frequently asked questions

What is the difference between glycaemic index and carbohydrate gram counting for diabetes?
Carb counting in grams is the clinical standard for calculating mealtime insulin doses because it is measurable and directly actionable with a known insulin-to-carb ratio. Glycaemic index captures how fast those grams raise blood glucose, but it cannot be used alone to determine a bolus dose — gram count remains the required input.
How accurate is a typical estimate of carbohydrates in a restaurant meal?
Restaurant portion sizes diverge from published menu data by 20-30% even at chains that publish nutritional information. A study of 269 restaurant meals found 19% of measured calorie counts differed from menu-stated values by more than 100 kcal. For composite or unlabelled dishes, manual estimation errors are large enough to meaningfully affect mealtime insulin dosing.
How do I count carbs in a typical North Indian lunch of chapati, dal, rice, and sabzi?
Two medium wholewheat chapatis contribute roughly 35 g carbohydrate, a 150 g bowl of dal around 30 g, a 90 g portion of cooked white rice approximately 25 g, a potato-containing sabzi 15-20 g, and 100 g of raita about 6 g — totalling roughly 110-114 g for the full thali. Manual estimates typically land 20-30 g lower because the rice and dal are underestimated.
Should I count total carbohydrates or net carbohydrates for insulin dosing?
This depends on your medication regimen and how your insulin-to-carb ratio was calibrated. Some diabetes educators use net carbs (total minus fiber) while others use total carbs. Using net carb counting without adjusting your ICR can cause under-dosing. Ask your endocrinologist specifically which convention matches your current ratio.
What does the photo-based carb counting approach do better than a database search?
A photograph already contains portion geometry, food colour and texture, and plate diameter as a scale reference. The AI model uses those cues to identify foods and estimate portions simultaneously, replacing three separate cognitive steps — identify, look up, estimate portion — with a single action. It also surfaces explicit confidence intervals rather than a false-precision integer.