If you've ever wondered how is health star rating calculated for an Aussie product, or stared at the side of a packet wondering what to look for on food labels, this post walks through the rubric SwapScore uses for its 1–10 score — and which signals actually move the needle for each of your seven health goals.
Scan yours now →Every barcode lookup feeds from FatSecret (primary) or Open Food Facts (fallback). We don't make up the numbers — we read them, normalise them per 100g, and apply the rubric.
Per-100g energy (kcal), sugars, fibre, protein, fat, saturated fat, sodium and carbohydrates. The bulk of the score is built from these.
Drives our UPF-share estimate: a soft, ingredient-position-aware ultra-processing signal that five of the seven goals weight into the score.
An optional portion cap. If a product lands well above the per-serve kilojoule ceiling for your goal, a soft penalty pulls the final score down.
Each goal reads the same nutrition packet through a different lens. Use the weight column to judge which lever matters most — bigger percentage, bigger swing.
| Goal | Signals and weights |
|---|---|
| Low Sugar | sugars ↓ (50%), UPF share ↓ (30%), energy density ↓ (10%), carbohydrates ↓ (10%) |
| High Protein | protein ↑ (55%), saturated fat ↓ (20%), UPF share ↓ (15%), sugars ↓ (10%) |
| Weight Loss | energy density ↓ (30%), sugars ↓ (20%), fibre ↑ (20%), protein ↑ (15%), fat ↓ (15%) |
| Low Sodium | sodium ↓ (65%), UPF share ↓ (20%), saturated fat ↓ (15%) |
| Heart Healthy | saturated fat ↓ (40%), sodium ↓ (30%), fibre ↑ (20%), sugars ↓ (10%) |
| Gut Health | fibre ↑ (45%), sugars ↓ (20%), UPF share ↓ (15%), saturated fat ↓ (10%), protein ↑ (10%) |
| Low Carb | carbohydrates ↓ (55%), fibre ↑ (20%), sugars ↓ (15%), UPF share ↓ (10%) |
Numbers reflect the v2 weights file shipped with the app (data/scoring-weights.v2.json). Update the file and the table updates with it.
Bands are listed alongside the rubric so you can scan a product and place it. They're relative to the goal you've picked, not absolute: the same cereal can sit at 7/10 for weight loss and 5/10 for high protein on the same day, because the two goals care about different things.
Pulled from our seeded catalogue and scored against the live v2 weights file. This is the same product used on the how-it-works page so the two stay consistent.
Sanitarium
The number on top is the goal-weighted composite; the bullets above show the three heaviest signals and where Weet-Bix lands inside each threshold bucket. If you change the goal, the same product re-runs against a different rubric and lands in a different band.
The rubric is open: the underlying weights file ships with the app at data/scoring-weights.v2.json.