Evidence reviewed: 19 October 2026, Foleil build 14 source. Foleil prepared this desk comparison; it is not an independent product review.

Foleil connects food logging with your training and recovery. Its nutrition figures can come from a reference food, a packaged-food record, ingredient calculations, your own label entries or an AI estimate. Those routes carry different uncertainty.

We compared 36 common food and preparation pairs with USDA FoodData Central. The mean absolute energy difference was 13.56 kcal per 100 g. Protein and fat differences averaged 0.56 g and 0.62 g where both sources supplied a value. Micronutrient agreement was less consistent. These results do not establish accuracy for a photographed meal, or equivalence to a dedicated nutrition app.

Where Foleil's food figures come from

Reference foods: Foleil bundles 2,854 food entries from CoFID 2021, the UK food-composition dataset. The reference search runs on your device. Choose the food in the preparation described and enter the edible grams; the saved figures scale from that food's per-100 g values. UK reference averages can differ from food grown, made or prepared elsewhere.

Packaged foods: Barcode lookup and optional online name or brand search use Open Food Facts. These are community database records. Check the product, preparation and package label before using them. Name search finds a product; its nutrient values come from the subsequent barcode lookup. Online name search is off until enabled and runs when submitted.

Your labels and recipes: You can enter label values yourself and calculate a recipe from ingredient amounts and source values. Foleil does not silently convert a raw ingredient to its cooked weight or guess a volume-to-weight conversion.

Estimated entries: Photo and meal-description capture offer editable estimates. A photo does not reveal every ingredient, cooking oil or exact portion. These estimates are a separate source from the reference values tested below.

USDA was the comparison reference for this check. It is not the bundled general-food table in the source reviewed here. Additional reference-table readers in the code do not establish that those datasets are available in the app.

Carbohydrate has an important coverage limit

The CoFID source reports carbohydrate as monosaccharide equivalents. Foleil deliberately leaves its label-carbohydrate field unknown for those entries rather than treating the definitions as interchangeable. Its Open Food Facts adapter also leaves carbohydrate for manual verification and entry because the provider distinguishes available and total carbohydrate.

That means none of the 36 CoFID foods supplied a comparable Foleil label-carbohydrate value in this check. We have not produced a carbohydrate accuracy percentage. Unknown is not zero. Enter a matching label value when you need one.

Micronutrients, including recipes

The bundled reference resource supplies calcium, iron, magnesium, potassium, sodium and vitamin D where available. It also supplies sugars, saturated fat, water and omega-3 for some foods. Coverage varies: for example, vitamin D is present for 2,171 of the 2,854 reference foods, while omega-3 is present for 620. A stored zero is different from a missing or trace value. This is not complete coverage of every vitamin, mineral or amino acid the app can store.

The build 14 implementation carries available micronutrients from selected ingredient reference values into calculated recipes and their logged portions. Ingredient quantities scale the values; servings divide the total. A nutrient total stays unknown if any contributing ingredient lacks that nutrient. Nested recipes resolve to their ingredient components. Changing an ingredient label manually clears the copied extra details so old micronutrients are not silently attached to changed figures.

This does not mean every recipe has a full nutrient panel. A recipe with only calorie and macro estimates cannot supply micronutrients those inputs never contained.

How the logging routes work

  • Search: select a named reference food and its preparation, then the grams eaten. Optional online product search opens the barcode-backed product record for review.
  • Barcode: scan or enter a barcode, check the product, choose the supported as-sold or prepared nutrition set, and enter the amount in the source's grams or millilitres. Unsupported or absent source data stays unavailable; manual label entry remains possible.
  • Photo: an available, permitted AI route estimates foods, portions and nutrition for review. On the on-device image route, recognition identifies foods and portions before a separate text step fills eligible missing nutrition. You can edit the items or choose source values. The figures remain estimates, including after review.
  • Voice: on-device dictation produces editable meal text, then the meal-description flow offers an estimate and review. The dictation step and the nutrition-estimation route are separate. A spoken portion is not a weighed portion.

The measured desk check

We chose a purposive sample of 36 common food and preparation pairs before calculating differences. It includes fruit, vegetables, dry and cooked grains and pulses, eggs, fish, nuts, cheese, butter and oil. Raw and boiled versions are separate rows. This is a small, non-random sample, not a representative accuracy score for the whole database.

For Foleil, we read the exact bundled resources from the build 14 source and reproduced its per-100 g field mapping in a saved Python script. We did not run the iPhone app. For the comparison, we downloaded the official USDA SR Legacy archive, whose final release was April 2018. Every pair below names a USDA FDC ID and a CoFID food code. We compared edible-food values in the stated preparation without cooking-yield, density or portion conversions.

A missing value stays missing and is excluded from that nutrient's paired calculation. We did not replace it with zero or remove foods after seeing their differences. A preparation review before calculation replaced a salty dry-roasted peanut record with plain unsalted kernels; that selection note is retained in the sample file.

Results per 100 g

Per-100 g database differences: Foleil versus USDA SR Legacy
Nutrient (unit)Comparable pairsMean absolute differenceWeighted absolute differenceMean per-food absolute % difference (positive USDA values)Mean signed difference
Energy (kcal)36/3613.566.66%12.66% (36 foods)-7.5
Protein (g)35/360.567.8%21.61% (35 foods)-0.02
Fat (g)36/360.625.12%74.53% (36 foods)0.19
Carbohydrate (g)0/36Not comparable———
Fibre (g)28/360.6423.75%29.47% (22 foods)-0.04
Sodium (mg)32/3615.4131.95%88.45% (31 foods)1.47
Potassium (mg)35/3657.8919.53%19.39% (35 foods)-4.51
Calcium (mg)35/3612.4620.13%29.12% (35 foods)6.06
Magnesium (mg)35/369.4620.99%22.75% (35 foods)0.2
Iron (mg)35/360.4933.08%31.92% (35 foods)-0.05
Vitamin D (µg)36/360.2861.88%62.55% (5 foods)-0.1

Reading the statistics: Mean absolute difference averages the size of each paired difference in the nutrient's unit. Mean signed difference is Foleil minus USDA, so negative means lower on average. Weighted absolute percentage difference is 100 × sum of absolute differences / sum of USDA values. Mean per-food absolute percentage difference gives each positive-reference food equal weight; foods with a zero USDA value cannot have that percentage calculated. The paired data supports recalculation from the stated formula; the retained calculation also records medians, maximum differences and zero-reference counts.

Energy's weighted difference was 6.66%, while its mean per-food difference was 12.66%. Those are different summaries, not an accuracy percentage. Fat's mean per-food difference was 74.53% despite a mean absolute difference of 0.62 g, because small reference amounts make percentage differences large. Both results are shown.

The largest energy difference was dried chickpeas: 320 versus 378 kcal per 100 g, a difference of −58 kcal. Dried lentils were 297 versus 352 kcal, a difference of −55 kcal. These differences remain in the results.

Micronutrient weighted differences ranged from 19.53% for potassium to 61.88% for vitamin D. For vitamin D, 31 of the 36 USDA values were zero; only five foods contributed to its mean per-food percentage. Farmed salmon was 4.7 versus 11 µg vitamin D per 100 g. The CoFID row does not specify salmon species; the USDA row is Atlantic salmon. This is a category comparison, not a matched laboratory sample.

All 36 food pairs

All 36 foods. Each pair is Foleil / USDA, per 100 g. Unknown is not zero.
Food (CoFID ID)USDA FDC IDEnergy (kcal)Protein (g)Fat (g)Carbohydrate (g)
Apple, raw with skin
CoFID 14-319
17168851 / 520.6 / 0.260.5 / 0.17unknown / 13.81
Banana, raw flesh
CoFID 14-318
17394481 / 891.2 / 1.090.1 / 0.33unknown / 22.84
Orange, raw flesh
CoFID 14-327
16909736 / 470.8 / 0.940.2 / 0.12unknown / 11.75
Strawberry, raw
CoFID 14-324
16776230 / 320.6 / 0.670.5 / 0.3unknown / 7.68
Blueberry, raw
CoFID 14-325
17171140 / 570.9 / 0.740.2 / 0.33unknown / 14.49
Broccoli, raw
CoFID 13-502
17037934 / 344.3 / 2.820.6 / 0.37unknown / 6.64
Broccoli, boiled without salt
CoFID 13-503
16996728 / 353.3 / 2.380.5 / 0.41unknown / 7.18
Carrot, raw
CoFID 13-496
17039334 / 410.5 / 0.930.4 / 0.24unknown / 9.58
Carrot, boiled without salt
CoFID 13-497
17039429 / 350.5 / 0.760.5 / 0.18unknown / 8.22
Cucumber, raw with skin
CoFID 13-523
16840914 / 151 / 0.650.6 / 0.11unknown / 3.63
Spinach, raw
CoFID 13-572
16846225 / 232.8 / 2.860.8 / 0.39unknown / 3.63
Spinach, boiled without salt
CoFID 13-573
16846319 / 232.2 / 2.970.8 / 0.26unknown / 3.75
Tomato, raw
CoFID 13-517
17045714 / 180.5 / 0.880.1 / 0.2unknown / 3.89
Sweet potato, raw flesh
CoFID 13-463
16848287 / 861.2 / 1.570.3 / 0.05unknown / 20.12
Sweet potato, boiled without skin or salt
CoFID 13-646
16848458 / 761.7 / 1.370.2 / 0.14unknown / 17.72
Onion, raw
CoFID 13-499
17000035 / 401 / 1.10.1 / 0.1unknown / 9.34
White mushroom, raw
CoFID 13-505
1692517 / 221 / 3.090.2 / 0.34unknown / 3.26
Cauliflower, raw
CoFID 13-512
16998630 / 252.5 / 1.920.4 / 0.28unknown / 4.97
White rice, long grain dry/raw unenriched
CoFID 11-861
169756355 / 3656.7 / 7.131 / 0.66unknown / 79.95
White rice, long grain boiled without salt
CoFID 11-862
169757131 / 1302.8 / 2.690.4 / 0.28unknown / 28.17
Brown rice, dry/raw
CoFID 11-868
169703333 / 3677.7 / 7.541.5 / 3.2unknown / 76.25
Oats, unfortified dry porridge
CoFID 11-788
173904381 / 37910.9 / 13.158.1 / 6.52unknown / 67.7
Whole chicken egg, raw
CoFID 12-937
171287131 / 14312.6 / 12.569 / 9.51unknown / 0.72
Whole chicken egg, boiled
CoFID 12-940
173424143 / 15514.1 / 12.589.6 / 10.61unknown / 1.12
Farmed salmon, raw flesh
CoFID 16-356
175167217 / 20820.4 / 20.4215 / 13.42unknown / 0
Lentil, dry/raw
CoFID 13-089
172420297 / 35224.3 / 24.631.9 / 1.06unknown / 63.35
Lentil, boiled without salt
CoFID 13-661
17242192 / 1167.8 / 9.020.7 / 0.38unknown / 20.13
Chickpea, dry/raw
CoFID 13-074
173756320 / 37821.3 / 20.475.4 / 6.04unknown / 62.95
Chickpea, boiled without salt
CoFID 13-662
173757129 / 1648.4 / 8.863 / 2.59unknown / 27.42
Almond, whole kernel
CoFID 14-896
170567554 / 57921.2 / 21.1549.9 / 49.93unknown / 21.55
Walnut, kernel
CoFID 14-879
170187688 / 65414.7 / 15.2368.5 / 65.21unknown / 13.71
Peanut kernel, plain unsalted
CoFID 14-877
172430564 / 56725.8 / 25.846 / 49.24unknown / 16.13
Cheddar cheese
CoFID 12-346
173414416 / 40325.4 / 22.8734.9 / 33.31unknown / 3.37
Butter, unsalted
CoFID 17-661
173430744 / 7170.6 / 0.8582.2 / 81.11unknown / 0.06
Olive oil
CoFID 17-038
171413899 / 884unknown / 099.9 / 100unknown / 0
Green sweet pepper, raw
CoFID 13-318
17042715 / 200.8 / 0.860.3 / 0.17unknown / 4.64

Every row is included. The paired results JSON retains the original source names, preparation descriptions, matching notes and all tested micronutrient values. The CSV contains every nutrient pair, including unavailable values. The sensitivity check below uses the same method with the almond row excluded.

What this check can and cannot show

This measures agreement between two food-composition datasets. It is not a chemical analysis of a meal, a test of portion estimation or a head-to-head test of nutrition apps. Cultivars, species, food formulation, water uptake, analytical methods and the age of the source data can affect the comparison. Some pairs use a broader USDA category: brown rice, mature spinach, whole lentils and Kabuli chickpeas have their matching limits recorded in the results.

There is also same-source overlap. CoFID's almond record explicitly cites USDA SR28, so that row is partly circular evidence. Excluding almonds changes energy's mean absolute difference to 13.23 kcal per 100 g and weighted difference to 6.86% across 35 foods. The raw sweet-potato row cites USDA for vitamin E, which we did not test. We have not ruled out other shared historical data origins.

The desk check does not validate search choices, packaged-food coverage, barcode scanning, voice recognition, photo estimates, recipe calculations or the journal's runtime behaviour. Source-backed values and editable capture make the inputs inspectable; their presence does not establish a universal accuracy rate.

Frequently asked questions

Is Foleil's nutrition more accurate than dedicated tracking apps?

This check does not establish that. It compares Foleil's bundled reference values with USDA for 36 stated food and preparation pairs. It includes missing data and substantial nutrient differences. A fair app comparison would need the same foods, source selections and measured portions across each app.

Are photo and voice entries included in the accuracy statistics?

No. The statistics use the bundled reference-food data. Photo and meal-description estimates have additional recognition and portion uncertainty and need their own measured evaluation.

Do recipes include micronutrients?

Calculated recipes can retain available micronutrients from sourced ingredient rows, scale them to ingredient quantities and divide them into servings. A nutrient total stays unknown if an ingredient lacks its value. This is not a claim that every recipe has complete micronutrients.

Why does a reference food show unknown carbohydrate?

The CoFID carbohydrate definition is not copied into Foleil's label-carbohydrate field. The reviewed Open Food Facts adapter also requires manual carbohydrate verification. Unknown means the chosen route did not supply a compatible value; it does not mean the food contains no carbohydrate.

Sources and reproducibility

  • CoFID 2021 publication and dataset, updated 19 March 2021; accessed 19 October 2026. Contains public sector information licensed under the Open Government Licence v3.0, © Crown copyright.
  • USDA FoodData Central downloads, SR Legacy, final release April 2018; archive downloaded 19 October 2026. USDA data-type documentation explains that SR Legacy includes analyses, calculations and published literature.
  • Foleil build 14 source and bundled resources, reviewed 19 October 2026. The paired values and formulas above document the desk calculation. An offline reproduction script, sample manifest, source snapshots, official USDA archive and hashes are retained with the research record. The calculation did not call an AI model or a nutrition API.