foodindex.co

Methodology

Every verdict on this site is one of three things: a fact recorded by someone else, a regulation we applied, or a bar we chose ourselves. Those are very different levels of authority, so this page says which is which for all fourteen checks — and, where the bar is ours, why we put it where we did.

The short version: if a claim is regulated, we cite the regulation. If it isn't, we say the number is ours. No badge on this site hides which kind it is.

Where every threshold comes from

The same authority line each product page shows for that diet.
VeganBased on Open Food Facts ingredient analysis.
VegetarianBased on Open Food Facts ingredient analysis.
Palm Oil FreeBased on Open Food Facts ingredient analysis.
Gluten-FreeBased on the ingredient list and allergen data recorded in Open Food Facts.
Dairy-FreeBased on the ingredient list and allergen data recorded in Open Food Facts.
Nut-FreeBased on the ingredient list and allergen data recorded in Open Food Facts (covers tree nuts and peanuts).
Soy-FreeBased on the ingredient list and allergen data recorded in Open Food Facts.
Egg-FreeBased on the ingredient list and allergen data recorded in Open Food Facts.
Ketoour bar≤5g net carbs per serving — our methodology, reasoned from the clinical 20–50g/day ketogenic range. Not a regulatory standard.
Low-Carbour bar≤15g net carbs per serving — our methodology, reasoned from the clinical <130g/day low-carb range. Not a regulatory standard.
Low-Sugarour bar≤5g sugar per serving — our own criterion. The FDA defines no “low sugar” claim at all.
High-Protein≥10g protein per serving — FDA 21 CFR 101.54 (≥20% DV).
Low-Fat≤3g fat per serving — FDA 21 CFR 101.62.
Low-Calorie≤40 kcal per serving — FDA 21 CFR 101.60.

Three of the fourteen are marked "our bar": keto, low-carb and low-sugar. Those are the three where no regulator has defined the term, so somebody has to pick a number. The rest are either a recorded fact or a cited rule.

Declared diets

Vegan, vegetarian and palm-oil-free come from Open Food Facts' own ingredient analysis. When a product fails, we walk the ingredient tree for the specific entry flagged as non-vegan or non-vegetarian and name it. If the product-level tag says no but no single ingredient is flagged, we say it contains a non-vegan ingredient and stop there — we never pick one to blame.

Allergen diets

Gluten-free, dairy-free, nut-free, soy-free and egg-free are the ones where being wrong actually hurts someone. They get the strictest evidence rule on the site, described in full below.

Computed diets

These are arithmetic on the nutrition panel. Every one of them shows you the actual number next to the bar it was compared against, because a bare pass or fail would be asking you to trust us.

Why our keto bar is ≤5g net carbs

There is no official keto standard anywhere — no regulator, no standards body, no agreed definition. That is exactly why we disclose ours instead of presenting it as settled.

We reasoned from the clinical range that ketogenic diets are actually studied at: roughly 20–50g of net carbs per day. A per-item bar has to sit low enough that a normal day of eating can stay inside that range, which is how we landed on ≤5g per serving. Low-carb uses the same reasoning against the clinical <130g/day figure, giving ≤15g per serving.

Reasonable people would pick different numbers. That is a fair criticism of any keto bar, ours included — so we show you the product's actual net carbs every time, and you can apply your own threshold if you disagree with ours.

Why low-sugar is our own criterion

The FDA defines "sugar-free," "reduced sugar" and "no added sugar." It defines no "low sugar" claim at all. There is simply no rule to cite, so our ≤5g per serving is a criterion we chose, labelled as ours everywhere it appears.

How we calculate net carbs

"Net carbs" has no legal definition either. Ours is:

net carbs = carbohydrates − fibre − erythritol − allulose − ½ × (other sugar alcohols)

Erythritol and allulose come out in full because their glycaemic impact is negligible. Other polyols — maltitol, sorbitol, xylitol — are discounted by half rather than removed, because they do raise blood glucose, just less than sugar.

Open Food Facts' sugar-alcohol data is patchy, so there is a fallback chain, and we tell you when a rougher one was used:

Why allergen checks are stricter than the rest

Until August 2026, a product with nothing recorded in its allergen data passed the allergen checks. That was wrong, and it shipped real errors: on crowd-sourced data, empty allergen data almost always means nobody filled this in, not confirmed to contain none. Three live pages told people a product was free of an allergen when our data said nothing either way.

We changed the rule. A pass now requires two things to agree:

Everything else resolves in the cautious direction:

The scan is tuned against real label language rather than plain substring matching, because that gets embarrassing fast: malt must not match maltodextrin, nut must not match nutmeg or coconut, tamari must not match tamarind. Oats get their own note — only certified gluten-free oats are reliably gluten-free.

One honest limit: a clean scan justifies a pass because US labelling law requires the major allergens to be declared in plain language. Gluten is not covered by that law beyond wheat, so for gluten we enumerate barley, rye, malt, oats, spelt and the rest explicitly.

Per serving or per 100g

We use the serving size whenever the product records one, because that is the amount a person actually eats. When it is missing we fall back to per 100g and say so on the page — the basis is printed next to every computed number, never left for you to assume.

Two thresholds shift with the basis. The keto bar becomes ≤10g per 100g on that fallback, and it is flagged as the rougher check it is. Low-fat and low-calorie carry the FDA's small-serving rule: when the reference serving is 30g or less, the limit must also hold per 50g of food, and both checks have to pass.

Why "can't determine" is an answer

A missing nutrient, an unannotated allergen or an ambiguous ingredient produces "can't determine — worth a quick check against the label before you buy." It never produces a guess dressed up as a verdict.

This costs us pages that would look more complete with a yes or a no on every row. That trade is deliberate. A wrong "yes" on an allergen page is not a cosmetic error, and a site that is usually right is not useful to someone with coeliac disease.

What this page is not

It is informational, not medical advice — see disclaimer. Always verify against the physical product label. Data comes from Open Food Facts and other public sources, each listed with its licence on attribution, and it can be incomplete or out of date.

Spot a mistake or have an idea? .

Tell us

What’s this about?

Menu

Search