Know what's really on the label.

Snap a photo of any food label — or paste its OCR text — and get an instant verdict: vegan, vegetarian, or hiding something, plus an honest European Nutri-Score.

Analyze a label ↓

1 · Scan or paste

Photograph the label or drop in raw, messy OCR text — we clean up the artifacts.

2 · Detect

Hidden animal derivatives get flagged: rennet, glycerin, E120, D3…

3 · Grade

The standard Nutri-Score algorithm — no free pass for "plant-based".

1 Label input

Drag & drop a label photo — we'll read the ingredients for you

Add nutrition info (for Nutri-Score)
Nutrition per 100 g
Try a demo:

2 Analysis

Vegetables on a rustic stool

Scan a label, paste its text, or try a demo product — results appear here.

How we score — the full recipe

No black boxes, no "trust us." Every table below is rendered live from the same data the scoring engine executes, so this page can never drift from the algorithm. Same numbers, same rules, same code — reproducible down to the last gram.

🥬 Dietary classification

Every ingredient is checked against rule lists. The worst finding wins, in this order:

  1. Non-Vegetarian meat, seafood, poultry, insects (carmine/E120), slaughter byproducts (gelatin, lard, tallow, animal rennet, pepsin, isinglass)
  2. Grey Area ingredients whose animal vs. plant/microbial origin isn't stated: rennet/"enzymes", glycerin, lecithin, mono- & diglycerides (E471), disodium inosinate (E631), vitamin D3, L-cysteine (E920), shellac…
  3. Vegetarian dairy, eggs, honey, beeswax — animal products without slaughter
  4. Vegan nothing animal-derived detected

The rennet rule: cheese listed without "microbial rennet", "vegetable enzymes" or similar is capped at Grey Area — as traditional rennet is extracted from calf stomachs, and the label alone can't prove otherwise.

We trust explicit plant sources: "soy lecithin" and "vegetable glycerin" stay vegan; bare "lecithin" or "glycerin" do not.

Nuance notes never change the verdict: bone-char-filtered sugar (US) and "natural flavors" are flagged for your information only — otherwise nearly every product would be Grey Area.

🏅 Nutri-Score (per 100 g)

Standard European algorithm for general foods: score = negative points − positive points. Each value earns one point per threshold exceeded (strictly greater than).

Negative points (Points A)

Positive points (Points C)

Gating rule: if Points A ≥ 11, protein points are excluded — unless the fruit/veg/nuts content exceeds 80%. This stops fatty, salty products from "buying back" a better grade with protein.

Final grade

Missing data: absent nutrition values are scored as 0 and explicitly flagged in the results — never silently assumed.