Nutri-Score explained: how the A to E grade is calculated
Nutri-Score takes the per 100 g nutrition panel, awards penalty points for energy, sugars, saturated fat and salt, awards credit points for fibre, protein and the fruit, vegetable, pulse and nut content, subtracts the credits from the penalties and maps the result onto a letter from A to E. It is designed to compare products within a category, so it answers "which breakfast cereal" well and "should I eat this" badly. Nothing about it is secret: the algorithm is published, and you can recompute any grade from the label.
Per 100 g, never per portion.
A to E, dark green to red.
Voluntary in the EU.
The two sides of the calculation
| Counts against the product | Counts for the product |
|---|---|
| Energy per 100 g, in kilojoules | Fibre |
| Sugars | Protein |
| Saturated fat | Fruit, vegetables, pulses, nuts, and olive, rapeseed and walnut oils |
| Salt |
Each component is scored in bands, so a product does not jump a grade because of a rounding difference. The negative total minus the positive total gives the score. One guard rule matters: a product with a high negative total cannot buy its grade back on protein alone unless its fruit and vegetable content is high, which stops salty, sugary, protein-fortified products from grading well. Beverages run on a separate and stricter scale on which only water can reach A, and cheeses, added fats and oils have their own variants.
| Final score (general foods) | Grade |
|---|---|
| Minus 1 or lower | A |
| 0 to 2 | B |
| 3 to 10 | C |
| 11 to 18 | D |
| 19 or higher | E |
The point tables were revised in 2023 to be harsher on sugar and salt, kinder to oily fish and to olive and rapeseed oils, and to penalise sweeteners in drinks. Countries adopt the update on their own timetable, so a pack printed in 2023 and a pack printed in 2026 can legitimately show different letters for the same recipe.
Six real products and why they land where they do
| Product (Dietly entry) | Per 100 g | Grade | Why |
|---|---|---|---|
| Plain Greek nonfat yogurt | 59 kcal, 0 g saturates, 7 g sugars, 60 mg sodium | A | Low on every penalty component at once. |
| Lean ground beef | 152 kcal, 3.1 g saturates, 0 g sugars, 67 mg sodium | A | Protein credit against modest penalties. |
| Vanilla almond cereal | 431 kcal, 15 g sugars, 11 g fibre, 13 g protein | B | Energy dense, but fibre and protein credits pull it up two grades. |
| Dark chocolate | 567 kcal, 30 g saturates, 16.7 g sugars, 16.7 g fibre | C | Heavy penalties, partly offset by fibre and cocoa content. |
| Salted pistachios | 607 kcal, 750 mg sodium, 10.7 g fibre | D | Energy and salt penalties beat the nut credit. |
| Tartar sauce | 387 kcal, 871 mg sodium, 12.9 g sugars | E | Energy, salt and sugar penalties with nothing on the credit side. |
What it genuinely does well
Within a shelf it works. Two breakfast cereals, two pizzas, two yogurts: the letter usually tracks the difference a dietitian would point at, and it does so in the half second a shopper actually spends. It is also computable from data every manufacturer already holds, which is why it scaled across several countries, and it resists the health halo, because it ignores the front of pack entirely and reads the panel.
Where it falls down
- It is per 100 g, not per portion. Nobody eats 100 g of salted pistachios or 100 ml of olive oil in one sitting, so foods eaten in small amounts grade harshly. The pistachios above are a D while a zero-calorie soft drink can reach B, which is the criticism the system never fully answers.
- It says nothing about processing. An ultra-processed product built from refined ingredients can grade well if its per 100 g profile is favourable.
- It compares within categories, but shoppers compare across them. An A yogurt and an A ground beef are not making the same claim about your diet.
- It is voluntary. Brands that would score badly simply do not print it, so an absent grade tells you nothing, and its absence is more common on exactly the products you would most want it on.
How Dietly stores it
Where Open Food Facts publishes a Nutri-Score for a product, Dietly carries it on the food page and returns it through the API alongside the per 100 g values. Many entries have no grade, most often because the underlying record is missing one of the components the algorithm needs. A missing grade is not a bad grade, and the panel itself remains the more informative object. If you want to see the reasoning rather than the letter, put two products side by side in the comparison tool and look at energy, sugars, saturated fat and salt per 100 g in that order.
Bottom line
Nutri-Score is an open, checkable formula: penalties for energy, sugars, saturated fat and salt, credits for fibre, protein and plant content, all per 100 g. Use it to choose between similar products, ignore it when comparing a nut to a soft drink, and read the panel when the decision matters.
Sources
Common questions
How is a Nutri-Score grade calculated?
Points are awarded per 100 g for energy, sugars, saturated fat and salt, then points for fibre, protein and fruit, vegetable, pulse and nut content are subtracted. The resulting score maps to a letter, with minus 1 or lower giving an A and 19 or higher an E for general foods.
Why do nuts and olive oil score badly?
Because the calculation is per 100 g and both are energy dense, while nobody eats 100 g in one sitting. The 2023 update improved the treatment of olive, rapeseed and walnut oils, but portion blindness remains the system's main limitation.
Is Nutri-Score mandatory in Europe?
No. It is a voluntary front-of-pack scheme adopted by some countries and brands. A product without a grade has not been assessed and has not necessarily scored badly.
Does a grade A mean a food is healthy?
Not on its own. Nutri-Score compares products within a category using four penalty and three credit components. It says nothing about processing, additives or portion size, and it is not a dietary recommendation.