How accurate is Kairo? We benchmarked it, and we're showing our work
Kairo estimates calories and macros from a photo of your meal. The honest question is: how close is that estimate? So we tested it. On 2026-06-16 we ran 16 internationally diverse meals through Kairo's full production analysis path and scored every result against public nutrition databases.
Result: 16 of 16 cases passed our accuracy gate, with ~96% weighted-macro accuracy across the set. On branded items with a real nutrition label, the mean per-100g calorie error was about 3.5% (median ~2.5%). On generic whole foods, error was higher: 10–12%.
This is a small internal benchmark, not a head-to-head against other apps. Here's exactly how we measured it, every number, and the sources, so you can check us.
Methodology
We run a curated set of 16 hard, realistic meals (international brands, tricky portions, and packaged goods spanning German, US, Japanese, and Italian cuisines: de-DE, en-US, ja-JP, it-IT) through the same production code path Kairo uses for a real photo scan. We don't grade a special test mode; we grade the app.
- Deterministic weighted-macro scorer: a fixed formula compares estimated calories and macros to ground truth. No human, no LLM judgment in this score.
- LLM user-experience judge: a separate check on whether the result reads as reasonable and useful.
- Citation-presence guard: programmatically verifies that any cited source URL exists and supports the number. A fabricated source cannot pass. This closes the most common failure mode in AI accuracy testing: trusting cited sources at face value.
Pass gate: for an item with a hard nutrition label, the per-100g calorie estimate must be within ±20% of the label. For a composite plate with no single ground truth, it must fall within a realistic calorie band. The whole suite (evals/) is reproducible.
Ground-truth sources
Every number below is measured against a public, checkable source:
- USDA FoodData Central: generic whole foods
- Open Food Facts: branded/packaged products with hard labels
- Published restaurant nutrition: chain menu data
Results: full production path, 2026-06-16
16 / 16 passed · 0 errors · ~96% weighted-macro accuracy
Branded & packaged items (per-100g calorie error vs Open Food Facts)
| Item | Per-100g error |
|---|---|
| Kinder Joy | 0.0% |
| Nutella | 0.2% |
| Skyr | 1.5% |
| Kölln Haferflocken (oats) | 3.4% |
| Pocari Sweat | 4.4% |
| Chobani | 11.7% |
| Mean | ~3.5% |
| Median | ~2.5% |
Restaurant item (vs published US nutrition)
| Item | Per-100g error |
|---|---|
| McDonald's cheeseburger | 4.2% |
Generic whole foods (per-100g calorie error vs USDA FoodData Central)
| Item | Per-100g error |
|---|---|
| Apple | 9.9% |
| Chicken breast | 10.1% |
| Banana | 12.4% |
Reading the results: Kairo is most precise on packaged items with a real label, where retrieval can pin down an exact number, and less precise on generic whole foods, where portion size and natural variation are genuinely ambiguous (a single "banana" varies by more than 30% in the real world). For context, peer-reviewed research puts end-to-end AI photo calorie error around 15–25%. Kairo's whole-food results land at the strong end of that range, and its branded results sit well below it.
Re-run 2026-08-25: 23 cases, three consecutive runs, with raw data
21/23 · 23/23 · 22/23 inside the pass gate
The set has grown from 16 to 23 cases since June. We sent it through the full production path (model plus nutrition retrieval) three times in a row, because a language model is not deterministic: the same input does not return the same number every time. A single run therefore only tells half the story. All three runs are below, including the cases that failed.
Important context: every case is a written meal description ("Skyr Natur, 150 g cup"), not a photo. The set measures whether Kairo finds and computes the right nutrition values. It does not measure how good portion estimation from a photo is.
| Input | Reference | Run 1 | Run 2 | Run 3 |
|---|---|---|---|---|
| Skyr Natur, 150 g Becher | 63 kcal/100gOpen Food Facts | 3.7% | 3.7% | 3.7% |
| Chobani plain nonfat Greek yogurt, 170 g cup | 59 kcal/100gOpen Food Facts | 10.3% | 10.3% | 10.3% |
| Kölln Haferflocken, 50 g Portion | 372 kcal/100gOpen Food Facts | 2.7% | 2.7% | 2.7% |
| ポカリスエット 350ml (Pocari Sweat, 350 ml) | 25 kcal/100gOpen Food Facts | 0.6% | 0.6% | 0.6% |
| Nutella, 15 g (un cucchiaino) | 539 kcal/100gOpen Food Facts | 0.2% | 0.2% | 0.2% |
| McDonald's Cheeseburger | 261 kcal/100gMcDonald's published nutrition | 1.7% | 1.5% | 1.5% |
| ein mittelgroßer Apfel | 52 kcal/100gUSDA FoodData Central | 0.0% | 0.0% | 0.0% |
| 150 g grilled chicken breast | 165 kcal/100gUSDA FoodData Central | 18.0% | 18.0% | 18.0% |
| eine Banane | 89 kcal/100gUSDA FoodData Central | 0.3% | 0.3% | 0.3% |
| Teller Spaghetti Bolognese | 450–850 kcal (band) | 650 kcal | 585 kcal | 585 kcal |
| chicken Caesar salad | 350–750 kcal (band) | 882 kcal ✗ | 647 kcal | 738 kcal |
| 豚骨ラーメン (tonkotsu ramen bowl) | 450–1000 kcal (band) | 919 kcal | 845 kcal | 845 kcal |
| Kinder Joy (ein Ei, 20 g) | 550 kcal/100gOpen Food Facts | 0.0% | 0.0% | 0.9% |
| Erdbeeren mit Joghurt | 100–210 kcal (band) | 146 kcal | 146 kcal | 130 kcal |
| Skyr mit Himbeeren | 130–240 kcal (band) | 186 kcal | 186 kcal | 180 kcal |
| Chocolate Lava Cake with Ice Cream | 450–900 kcal (band) | 648 kcal | 762 kcal | 610 kcal |
| McDonald's Quarter Pounder | 256 kcal/100gMcDonald's Nederland | 0.8% | 4.8% | 0.8% |
| Proteinriegel 55 g, laut Packung 220 kcal, 20 g Eiweiß, 21 g Kohlenhydrate, 7 g Fett | 400 kcal/100gThe user's own label transcription | 0.0% | 0.0% | 0.0% |
| Sportness Protein Riegel | 368 kcal/100gOpen Food Facts | 2.2% | 2.2% | 2.2% |
| KoRo Veganes Proteinpulver Vanille, 30 g Portion | 345 kcal/100gKoRo Handels GmbH | 0.5% | 0.5% | 0.5% |
| 100g spaghetti mit bolognese soße | 420–700 kcal (band) | 390 kcal ✗ | 493 kcal | 377 kcal ✗ |
| 50 gramm high protein joghurt sauerkirsch + crisp | 75–160 kcal (band) | 103 kcal | 108 kcal | 101 kcal |
| high protein joghurt pfirsisch + crisp | 220–420 kcal (band) | 308 kcal | 299 kcal | 230 kcal |
Percentages = calorie error per 100 g against the label or database (gate ±20%). kcal values = total calories of a composite plate with no single reference; they must fall inside the stated band. ✗ = failed.
Where Kairo missed
Two cases failed in at least one run. "100g spaghetti mit bolognese soße" landed below the band in two of three runs (377 and 390 kcal instead of at least 420). The most likely explanation: Kairo partly read the 100 g as cooked rather than dry pasta. The chicken Caesar salad came out above the band once (882 kcal, band up to 750) because the amount of dressing is estimated freely; in the other two runs it was inside the band at 647 and 738 kcal. For grilled chicken breast the error was 18% in all three runs, just inside the gate.
Download the raw data
All 69 individual results (23 cases × 3 runs) with input, reference value, Kairo's output, error and the source of the reference. Licence: CC BY 4.0. Use them, check them, cite them.
Our internal photo test sets are not included. They consist of real meals from users and are therefore not published.
What this does and doesn't prove
What it shows: a transparent, reproducible accuracy measurement on a defined, internationally diverse 16-case set, scored deterministically against named public databases (USDA FoodData Central, Open Food Facts, published restaurant nutrition), with a programmatic guard against fabricated citations.
What it does NOT show: that Kairo is "the most accurate app." This is a small (16-case) internal benchmark, not a head-to-head against Cal AI, MyFitnessPal, Cronometer, or any other app, and not a clinical study. We did not test other apps on this set and make no comparative claim. A larger or differently-composed set would shift the averages. Whole-food estimates carry real uncertainty from portion and natural variation.
Who built this
Kairo is built by Valentin Weinert, a software engineer (not a dietitian) who built Kairo's reproducible evaluation pipeline. The reason this page exists: an accuracy claim you can't check isn't worth much. If you run an independent benchmark, we'll share the methodology and ground-truth sources so you can verify the numbers yourself.
Company: Centaurio UG (haftungsbeschränkt), Germany. Hosting: EU/GDPR.
Scan your meal. See the numbers.
Get Kairo on the App Store