The rubric

Methodology, in full.

Score formula

# When NOVA is known
base   = { 1: 96, 2: 78, 3: 58, 4: 32 }[nova]
score  = clamp(0, 100, base
                - additives_count * 4
                - max(0, ingredients_count - 8) * 1.5)
status = "verified"

# When NOVA is missing but additives + ingredient count are present
score  = clamp(0, 100, 75
                - additives_count * 8
                - max(0, ingredients_count - 5) * 2)
status = "estimated"

# When neither is present
score  = null
status = "unscored"

Score bands

Data source

Every product, ingredient list, additive tag, allergen tag, and image URL on this site comes from Open Food Facts, a crowdsourced food database licensed under the ODbL 1.0. Per the licence we attribute on every page and republish derived data under the same terms.

For products without an Open Food Facts photo, we fetch a public retailer-CDN image via Google Images. We don't host or modify the image — the URL is referenced as-is.

Coverage caveats

Found a problem with the methodology? Push back: alexdenne@gmail.com.