Where our numbers come from
We think you should be able to check our work. Every number in TwentyGrams traces back to a named source — here’s exactly what that means.
Where each food comes from
Whole foods (a chicken breast, an egg, an avocado) are matched to the USDA’s FoodData Central, which publishes lab-analyzed, compiled and survey-based values through FNDDS (Food and Nutrient Database for Dietary Studies), SR Legacy (the long-standing Standard Reference database) and Foundation Foods. Packaged foods come from two places: the USDA Branded Foods database, which is built from nutrition labels that manufacturers submit, and Open Food Facts, a public, community-built database that anyone can contribute to. We label Open Food Facts entries as community data, and we don’t describe them as verified.
Open Food Facts entries are contributed by volunteers and can contain mistakes, which is why we mark them as community data. Every food in the database is traceable to the dataset it came from;the source is shown on search results and on a food's detail screen.
The provenance line
Tap any food in your log to see its source line: the dataset and the net-carb equation. It’s the smallest line of text in the app, and it took longer to build than almost anything else, because it’s the one thing that can’t be faked.
If you’re the kind of person who checks where a number came from before trusting it, the source is shown on search results and on a food's detail screen. Tap a food to see the dataset behind its numbers: USDA, manufacturer-submitted label data, or community data from Open Food Facts. Community data comes from contributors, and we don't check it against the label; some values are recalculated or set aside by TwentyGrams (see Licenses). That’s what it’s for: sourcing, not a verdict. It doesn’t read ingredient lists or flag allergens, so if you’re managing a food sensitivity or allergy, use it to check where the number itself came from, then confirm ingredients against the product’s own label or the manufacturer directly — the badge is a starting point for your own research, not a substitute for either. If the sourcing on a specific product looks wrong or incomplete, that’s what the “tell us” link below is for — we’ll trace it back and fix it. TwentyGrams is an informational nutrition-tracking tool. It does not provide medical advice and does not replace professional medical guidance, diagnosis, or treatment.
The AI reads. The database computes.
When you type or say what you ate, our AI extracts what you said — it does not generate a nutrition number. Every number you see is computed from the sourced database, never invented, never estimated by a language model. This is an architecture rule, not a policy we could quietly change later.
Why bulk data instead of a live API
We ingest USDA’s bulk data files directly and re-seed them on a version schedule, rather than calling a live food API per search. It’s slower to set up and took real engineering time — but it means the whole database lives on your phone, works offline, and isn’t dependent on a third party’s uptime or their own data drift.
Minerals on recipe pages, and where they stop
Our recipe pages show five per-serving minerals alongside the macros — sodium, potassium, magnesium, calcium and iron. They come from the same place every other number does: the matched USDA record for each ingredient, scaled by that ingredient’s weight and divided by the serving count. Nothing is estimated, and no model ever supplies one.
These five are shown because their coverage is good enough to be worth showing. USDA reports them for essentially every whole-food record — the lab-analyzed ingredients most recipes are built from. We hold ourselves to roughly 98% coverage before a nutrient earns a slot on the page.
Plenty of nutrients don’t clear that bar, and we’d rather say so than pad the page. USDA’s coverage of vitamins is genuinely patchy: vitamin D is reported for about two-thirds of the Standard Reference records, choline for under two-thirds, and pantothenic acid (B5) is missing entirely from the FNDDS dataset — which happens to be the dataset our ingredient matcher trusts first. Packaged and crowd-sourced foods are sparser still. We store all of it, and we show the part we can stand behind. As coverage improves, fields get added.
Two consequences worth being plain about. First, if a single ingredient in a recipe has no magnesium reading, that recipe’s magnesium shows as a dash — not a partial total added up from the ingredients that did have one. A number built from four ingredients out of six is not an underestimate you can reason about; it’s a wrong number that looks like a right one. Second, we don’t show these against a daily target or a percentage. We don’t know your age, your body, or what your doctor told you, and turning a measurement into a verdict on whether you’ve had enough is not ours to do. We state the number.
An honest example
We compared Fage Total 0% plain Greek yogurt — a common, widely-stocked product — across its own manufacturer label and one independent nutrition database. The manufacturer’s label states 3.0g carbs per 100g. An independent database lists 4.1g for the same product. That’s a real, ~37% difference for one specific yogurt — not a hypothetical. On a 20g/day carb budget, small gaps like this compound over weeks if your tracker doesn’t tell you where its numbers came from.
Check us
If a number ever looks wrong, tap it. See the source. If you still think it’s wrong, tell us — we’d rather fix a bad entry than defend one.