Scoring methodology

How Zabel scores a product

Published in full so that anyone - a shopper, a nutritionist, a brand - can reproduce any score by hand. If you find an error in it, we want to hear about it.

Version1.0.0
In effect from 14 Sep 2026
Reviewed byNot yet
Rule 01

Arithmetic, not opinion

The score is a fixed formula over the label's own numbers. A language model reads the pack and writes the explanation. It never decides the score, and nothing it wrote is published until a person promotes it.

Rule 02

Every threshold has a source

No number in this method is ours. Each one comes from ICMR-NIN, FSSAI, WHO or a published evaluation, and the source is stored beside the threshold rather than cited from memory.

Rule 03

No score without the data

If a required value is missing from the pack, there is no score - not a zero and not a guess at the middle. A confident wrong number is worse than none.

The four components

100 points, split four ways

Each component is scored independently and the four are added. Half the weight sits on the nutrients a regulator would put a warning on, because that is the thing most likely to matter to the person holding the pack.

Component What goes in Weight Source of thresholds
Nutrients of concern Per 100 g or 100 ml Total sugar, sodium, saturated fat, energy density and trans fat, each with its own share of the fifty: sugar 15, sodium 13, saturated fat 12, energy 6, trans fat 4. A part scores full marks below one figure, nothing above another, and slides between the two. 50 ICMR-NIN Dietary Guidelines for Indians · FSSAI draft front-of-pack thresholds · WHO SEARO nutrient profile model
Positive nutrients Per 100 g or 100 ml Protein 8 and fibre 5, both full marks at a figure a genuinely good pack reaches, plus 2 for declared whole grain, fruit, nut or legume content. 15 ICMR-NIN Recommended Dietary Allowances
Additives Starts at 20, deducts Each declared INS code carries an evidence-graded concern level and a fixed deduction: grade 1 costs 2, grade 2 costs 6, grade 3 costs 10. We deduct by evidence rather than by counting additives - three harmless ones cost less than one contested one. A code with no rulebook entry yet costs nothing and is shown as unknown. An additive India does not permit takes the whole twenty and sends the product to the bottom band outright. 20 FSSAI Food Additives Regulations, Appendix A · Codex GSFA · JECFA and EFSA evaluations
Processing NOVA group A NOVA-style classification inferred from markers in the ingredient list: hydrogenated fats, protein isolates, flavourings, colours, refined oils. The group sets the points outright: group 1 keeps all fifteen, group 2 twelve, group 3 eight, group 4 two. 15 NOVA classification, with an Indian adaptation

Some things sit above the score rather than inside it. A banned additive, an allergen on your profile, or a pack that would carry a front-of-pack warning is shown first, whatever the total came to. One warning means the pack cannot be called better than fair; two mean it cannot be called better than poor. The total is never adjusted - only the word attached to it, and the app names the flags that did it.

A nutrient the label did not declare earns nothing and keeps its weight. Dropping the part and spreading its weight over the declared ones sounds fairer and rewards omission - a pack with 7 g of protein and no fibre line would outscore the same pack honest enough to print 0 g. Beverages are scored on their own weights, because on the solid ones a full-sugar cola collected points for containing no salt or fat.

Worked example

One product, all the way through

A pack of masala instant noodles. The panel is a realistic Indian one rather than any particular brand's, and this same case is in the test suite with the numbers below as its expected answer - derived independently of the code, so that the engine and the method can be caught disagreeing.

Nutrients of concern - per 100 g
Total sugar 3.5 g - full marks at 5 g 15 / 15
Sodium 1,200 mg - nothing from 600 mg 0 / 13
Saturated fat 8.5 g - nothing from 5 g 0 / 12
Energy density 450 kcal - nothing from 400 kcal 0 / 6
Trans fat 0.1 g - full marks at 0.2 g 4 / 4
Component total 19 / 50
Positive nutrients
Protein 9.5 g - full marks at 11 g 7 / 8
Fibre Not declared on the pack 0 / 5
Whole grain, fruit, nut, legume None declared 0 / 2
Component total 7 / 15
Additives - six declared
INS 500 INS 412 Sodium carbonates, guar gum - grade 0 0
INS 621 INS 627 INS 631 The flavour-enhancer trio - grade 2, −6 each −18
INS 501 Potassium carbonates - no rulebook entry yet 0
Component total 2 / 20
Processing - NOVA group 4
Flavour enhancer Hydrolysed protein Refined palm oil
Component total 2 / 15
Total

19 + 7 + 2 + 2 - and the pack would carry HIGH IN SODIUM and HIGH IN SATURATED FAT

30 /100
Poor

The four components are rounded to whole numbers together rather than one at a time, so a breakdown never adds to 29 under a headline of 30. That is the only thing between the figures above and the number in the app.

The five bands

Colour and word always travel together, so a band still reads when it is printed in grey or seen by someone who is colour blind. The band can be pulled down by a front-of-pack warning; it is never pushed up.

Excellent80 – 100
Good60 – 79
Fair40 – 59
Poor20 – 39
Avoid0 – 19
No score A required value is missing or unclear on the pack

Change log

The method only changes with a new version number, and a score records the version that produced it - so a score you saw last month can still be explained next year. Correcting a misread panel re-scores that product; it does not rewrite the method.

v1.0.0
First published method 14 Sep 2026
v1.1.0
Planned: thresholds updated when FSSAI notifies the final front-of-pack rule Not yet dated
Disagree with a score?

Anyone can dispute one - a shopper who thinks a value was misread, or a brand that thinks a threshold was applied wrongly. Every reading in the app has a report button that needs no account, and a person works the queue.

Dispute a score