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
| Vegan | Based on Open Food Facts ingredient analysis. |
|---|---|
| Vegetarian | Based on Open Food Facts ingredient analysis. |
| Palm Oil Free | Based on Open Food Facts ingredient analysis. |
| Gluten-Free | Based on the ingredient list and allergen data recorded in Open Food Facts. |
| Dairy-Free | Based on the ingredient list and allergen data recorded in Open Food Facts. |
| Nut-Free | Based on the ingredient list and allergen data recorded in Open Food Facts (covers tree nuts and peanuts). |
| Soy-Free | Based on the ingredient list and allergen data recorded in Open Food Facts. |
| Egg-Free | Based 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.
- Vegan — Based on Open Food Facts ingredient analysis.
- Vegetarian — Based on Open Food Facts ingredient analysis.
- Palm Oil Free — Based on Open Food Facts ingredient analysis.
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.
- Gluten-Free — Based on the ingredient list and allergen data recorded in Open Food Facts.
- Dairy-Free — Based on the ingredient list and allergen data recorded in Open Food Facts.
- Nut-Free — Based on the ingredient list and allergen data recorded in Open Food Facts (covers tree nuts and peanuts).
- Soy-Free — Based on the ingredient list and allergen data recorded in Open Food Facts.
- Egg-Free — Based on the ingredient list and allergen data recorded in Open Food Facts.
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.
- Keto — ≤5g net carbs per serving — our methodology, reasoned from the clinical 20–50g/day ketogenic range. Not a regulatory standard.
- Low-Carb — ≤15g net carbs per serving — our methodology, reasoned from the clinical <130g/day low-carb range. Not a regulatory standard.
- Low-Sugar — ≤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.
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:
- Per-polyol values present → the full formula above.
- Only a combined polyols figure → the conservative half-discount applied to all of it.
- No sugar-alcohol data at all → carbs minus fibre, with the caveat "may not account for sugar alcohols" printed on the page.
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:
- the allergen is absent from the declared allergen data, and
- a scan of the full ingredient list finds no term for it either.
Everything else resolves in the cautious direction:
- Allergen declared → no, with the allergen named.
- Listed only as "may contain" → can't determine, flagged as a cross-contact risk. Never a pass.
- Ingredient list incomplete → can't determine.
- The ingredient scan finds a term but the allergen data doesn't → can't determine, naming the term we matched. Never a "no" — a keyword match is not evidence enough to assert a product contains something, and "coconut milk" must not become a dairy failure.
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.