Beta

Methodology

Healthier Eats gives every meal a single 0-100 score so you can compare options side-by-side. The score is a transparent blend of the nutrition values restaurants already publish, plus a small set of caps that stop one bad number being hidden by good ones. It is not medical advice and not a diet plan.

What we look at

We use the nutrition table on the brand's own site or menu. Each meal is judged on six values, all measured per portion as sold:

  • Calories - total energy per portion.
  • Protein - both grams per portion and protein as a share of total energy.
  • Fibre - grams per portion.
  • Sugar - total sugars per portion.
  • Salt - grams per portion (not sodium).
  • Saturated fat - grams per portion.

We also record allergens, diet flags (vegan, vegetarian, pescatarian), cuisine and occasion. Those are used for filtering, not for the score itself.

How each component is scored

Each component is converted to a 0-100 sub-score using fixed bands. Bigger is better for protein and fibre; smaller is better for calories, sugar, salt and saturated fat.

Component100~75~50~250
Calories≤ 300≤ 500≤ 750≤ 900> 900
Fibre≥ 8 g≥ 6 g≥ 4 g≥ 2 g< 2 g
Sugar≤ 5 g≤ 10 g≤ 15 g≤ 25 g> 25 g
Salt≤ 1.5 g≤ 2.0 g≤ 2.4 g≤ 3 g> 4 g
Saturated fat≤ 3 g≤ 5 g≤ 7 g≤ 10 g> 10 g

Salt uses six bands: ≤ 1.5 g = 100, ≤ 2.0 g = 80, ≤ 2.4 g = 60, ≤ 3.0 g = 40, ≤ 4.0 g = 15, > 4 g = 0. Lower salt contributes to a stronger fit score.

Protein is a blend of two ideas: 60% from grams per portion (30g = full marks) and 40% from how much of the meal's energy actually comes from protein (20% of kcal = full marks). This rewards meals that are genuinely protein-led, not just big.

How we combine them

The six sub-scores are combined as a weighted average. Weights reflect how strongly each component shapes whether a meal is a good everyday choice:

  • Protein - 20
  • Salt - 18
  • Calories - 15
  • Saturated fat - 15
  • Fibre - 15
  • Sugar - 12

The raw score is the weighted sum divided by the total weight, then rounded to a whole number between 0 and 100.

Caps for meaningful watch-outs

A weighted average alone can let a meal hide one large problem behind several smaller wins. To prevent that, we apply caps that limit the final score when a single value crosses a clear threshold. The strictest cap wins.

  • Salt above 1.5 g, capped at 82
  • Salt 3 g or more, capped at 78
  • Salt 4 g or more, capped at 65
  • Saturated fat 6 g or more, capped at 78
  • Saturated fat 10 g or more, capped at 65
  • Calories 900 kcal or more, capped at 70

Applied caps are stored alongside the score so you can see exactly why a meal did not go higher.

When fibre is missing

Not every brand publishes fibre. We never treat missing fibre as zero - that would unfairly punish meals where the brand simply did not disclose. Instead:

  • The score is calculated from the five remaining components (total weight 80).
  • Confidence is set to Medium and the meal carries a Fibre not provided note.
  • The score is capped at 80 so a meal without fibre data cannot reach "Stronger fit".
  • If salt is also above 1.5 g, the cap tightens to 78.
  • The High fibre tag is never awarded when fibre is missing.

Confidence levels

  • High - all six values are present and consistent with each other.
  • Medium - fibre is missing, or one of the values triggers a validation warning (for example saturated fat greater than total fat).
  • Low - one of the five required base values is missing. The meal shows "Score unavailable".

What the score label means

  • 85-100 Stronger fit - a solid everyday option across the board.
  • 80-84 Good fit - positive overall, with at most a minor trade-off.
  • 70-79 Decent fit - reasonable, but not in the green zone.
  • 50-69 Mixed - some wins, some watch-outs; check the breakdown.
  • 0-49 More watch-outs - one or more values are high enough to call out.

Positive tags

Tags are awarded purely on the published numbers:

  • High protein - at least 20 g protein and at least 20% of energy from protein.
  • 25g+ protein - factual: at least 25 g protein per portion.
  • High fibre - at least 6 g fibre (only when fibre is actually published).
  • Lower sugar - 5 g sugar or less.
  • Lower salt - 1.5 g salt or less.
  • Lower saturated fat - 3 g saturated fat or less.

Watch-outs

We surface a watch-out tag when a value is noticeably higher than typical options:

  • Higher salt - 3 g or more.
  • Higher saturated fat - 6 g or more.
  • Higher energy - 700 kcal or more.

Worked example

Greggs Roast Chicken & Bacon Club Baguette: 457 kcal, 24 g protein, 5.5 g sugar, 1.7 g salt, 2.4 g saturated fat, fibre not provided.

  • Calorie sub-score 90, protein sub-score ~84, sugar 100, salt 80, saturated fat 100.
  • Weighted average over 80 = around 89.
  • Salt is above 1.5 g, so the score is capped at 82.
  • Fibre is missing and salt is above 1.5 g, so the fibre-missing cap of 78 applies.
  • Final score: 78, label Decent fit, confidence Medium, with a Fibre not provided note.

Sources and freshness

We aim to use the official restaurant source for every meal and re-check periodically. Sample items in this beta are clearly marked as Sample data. Restaurants update recipes, portion sizes and ingredients without notice - always check the brand directly before ordering, especially for allergens.

What the score is not

  • It is not a clinical or medical assessment.
  • It does not account for your personal calorie needs, training, or conditions.
  • It does not judge taste, value, sustainability or sourcing.
  • It is a comparison aid, not a verdict on any single meal.