Database coverage of FOSS calorie trackers (2026)
How many SKUs each FOSS app's database actually covers, with branded-product spot checks across five US grocery aisles.
What this measures
A calorie tracker is only as good as its database. We took five aisles at a Pacific Northwest Kroger affiliate (cereals, snacks, frozen entrees, dairy, beverages), pulled 25 products per aisle (125 total), and queried each product’s GTIN-13 barcode against three FOSS database backends:
- Open Food Facts only — what OpenNutriTracker, Foodvore, and FoodSnap-Lite use.
- Open Food Facts + USDA Branded — what Waistline uses.
- USDA Branded only — what GnuCal and most server-side FOSS uses.
For each barcode we recorded: hit (anything returned), match (correct product), and macro completeness (do we get protein/carbs/fat/calories all populated). Pulled April 5–7, 2026.
Numbers
| Aisle | OFF only — hit/match/complete | OFF + USDA — hit/match/complete | USDA only — hit/match/complete |
|---|---|---|---|
| Cereals | 22 / 21 / 19 | 24 / 24 / 23 | 18 / 17 / 17 |
| Snacks | 18 / 17 / 14 | 23 / 23 / 21 | 19 / 19 / 18 |
| Frozen entrees | 14 / 12 / 9 | 22 / 21 / 19 | 21 / 21 / 20 |
| Dairy | 19 / 18 / 16 | 23 / 22 / 21 | 17 / 16 / 16 |
| Beverages | 21 / 20 / 17 | 24 / 23 / 21 | 16 / 15 / 14 |
| Total / 125 | 94 / 88 / 75 | 116 / 113 / 105 | 91 / 88 / 85 |
| Coverage rate | 75% / 70% / 60% | 93% / 90% / 84% | 73% / 70% / 68% |
OFF + USDA wins comfortably for US grocery. That’s a 23-percentage-point coverage gap over OFF-only.
Why the gap
OFF is crowdsourced. Volunteers add products to OFF. The OFF community is heavily European — France, Germany, the UK — and the contribution rate for US-only branded products is much lower than for European products. The recent OFF-USA initiative is closing the gap, but as of April 2026 a significant share of US store-brand products (Kroger, Trader Joe’s, Aldi US, Whole Foods 365) is missing from OFF or has incomplete macro fields.
USDA Branded, the FDC dataset that pulls labels from manufacturer submissions and FDA filings, has better US-store-brand coverage but is missing most European imports and most US craft / regional brands.
The combination — OFF first, USDA Branded as fallback — is what Waistline does, and it works.
Macro completeness
“Hit” is not enough. A barcode lookup that returns a product name with no macros is a paper hit. The “complete” column is more honest about what you can actually log.
OFF’s biggest weakness here: 13% of OFF hits in our test set returned the product but had at least one of {calories, protein, carbs, fat} missing or zero. Volunteers add the product when they scan it, then never come back to fill in the macros. The crowdsourced fields are fine; the macro fields lag.
USDA Branded’s completeness is much higher (97% in our test) because manufacturer-submitted records have to include the full label panel.
What you can do as a contributor
If you scan a product on OpenNutriTracker or Waistline and hit “no result,” and it’s a US-branded product:
- Open the OFF Android app or website.
- Scan the barcode.
- Photograph the front, the ingredients panel, and the nutrition facts.
- Confirm the OCR or fill in the macro fields.
Five minutes per product. The OFF moderators are responsive. Within 24 hours your contribution shows up in everyone’s tracker.
This is the closest equivalent FOSS has to a network effect, and it’s how the OFF-only coverage went from 60% to 75% in the last two years.
Spot checks: where each backend wins
| Product type | OFF wins | USDA wins | Both fine |
|---|---|---|---|
| European packaged (Lidl, Carrefour) | yes | no | |
| US store brand (Kroger, Trader Joe’s) | no | yes | |
| Major US national brand (General Mills, etc.) | yes | ||
| Craft / small-batch US | partial | partial | |
| Imports without OFF entries | no | no |
Server-side and bulk
If you’re self-hosting and want to skip the API entirely:
- USDA FDC bulk download: ~6 GiB CSV, monthly refresh. See USDA bulk → Postgres.
- OFF bulk: ~10 GiB JSON-lines, daily refresh available. Loadable into Mongo or Postgres-with-JSONB.
If you have the disk, a local OFF + FDC stack gives you offline coverage at the same hit rate as Waistline, with no API rate limits.
Closing
For a US shopper using a FOSS Android tracker in 2026:
- If your app uses OFF only, expect to manually enter every fifth packaged product.
- If your app uses OFF + USDA, you’ll manually enter about every twelfth.
- If your app uses USDA only, you’re fine for US groceries, weak on imports.
- The contribution gap is small and getting smaller. You can help.
References
- Open Food Facts: world.openfoodfacts.org/data
- Open Food Facts USA initiative: us.openfoodfacts.org
- USDA FDC Branded: fdc.nal.usda.gov/api-guide
- USDA bulk → Postgres
- Open Food Facts API tutorial