Full transparency
How the GSF score works
Every rule the score uses, including the ones that make it less flattering than the label. If a number is going to guide what you eat, you deserve to see how it's made.
The formula
Net carbs = total carbohydrate − fiber − sugar alcohols that don't raise blood sugar (see the sweetener rules below). Saturated fat counts double because a little goes a long way against your heart. Trans fat counts four times because it is the worst artery fat gram for gram: it raises the bad particles and lowers the good ones. It's rare in US food since 2018, but when it shows up, it's punished.
Bands: 0–6 green (everyday) · 7–12 yellow (sometimes) · 13+ red (rarely).
Realistic portions
Scores are calculated on the amount of the food a person actually eats, not on tricks in either direction.
| Food | Scored on | Why |
|---|---|---|
| Packaged solids | The label serving, kept between 30g and 100g | The floor stops the tiny-serving trick ("one cookie"). The ceiling stops whole-container servings. |
| Oils, butter, dressings, mayo | One tablespoon (14g) | Nobody eats 100g of olive oil. Scoring oils per 100g would make the good fats look terrible. |
| Sugary drinks | The glass, can, or bottle (240–360g) | Nobody drinks 100g of soda either. Scoring drinks per 100g would make sugar water look fine. |
| Milk and low-sugar drinks | Per 100g | Milk's sugar is lactose that arrives with protein; it doesn't behave like soda. |
| Alcohol | Not scored | Vodka has zero carbs and zero saturated fat, and it still isn't a health food. GSF's two numbers don't apply, so we say so instead of printing a green light. |
The sweetener rules
| Ingredient | How it counts | Why |
|---|---|---|
| Erythritol, allulose | Subtracted in full | They pass through without raising blood sugar. |
| Maltitol | Counts in full | It spikes blood sugar like real sugar wearing a disguise. Labels that subtract it are lying to you. |
| Other sugar alcohols (xylitol, sorbitol…) | Half-counted | They have a small effect. Half is a fair, slightly cautious middle. |
| Maltodextrin, dextrose | Counts in full, plus a warning on the card | Maltodextrin reads "0g sugar" on labels but spikes faster than table sugar. |
| IMO "fiber" (isomaltooligosaccharide) | Only half counts as fiber | Roughly half of it digests like carbs. |
| Glycerin | Noted on the card | Common in protein bars; barely affects blood sugar, but products rarely report grams, so we flag it instead of guessing. |
What the score deliberately ignores
- How fast different real carbs hit. 10g of net carbs from lentils is gentler than 10g from white rice. Fiber subtraction captures most of this, not all of it. Warnings on the card cover the worst offender (maltodextrin).
- Protein's cushioning effect. Protein slows a spike, but it's tracked as one of the two things you keep high, not baked into the score.
- Differences between saturated fats. We count them all equally, the same way heart guidelines do.
- Cholesterol. For most people, cholesterol you eat barely moves cholesterol in your blood.
- Sodium. Real, but it's a blood-pressure problem, not a blood-sugar or artery-fat problem. Two numbers, on purpose.
- Fructose's low glycemic index. Fruit sugar spikes less but loads the liver, so we count it in full rather than reward it.
Where the numbers come from
USDA FoodData Central first (standardized US label data), Open Food Facts as backup (widest barcode coverage). Both have gaps, duplicates, and out-of-date records. Only records that can support an accurate score are shown. Records missing the data the score needs are suppressed rather than scored wrong, and a record whose score would read too high (sweetener grams absent) is suppressed whenever a complete record of the same product exists. When such a record is the only one available, it is shown with a plain warning instead of being hidden.
The GSF score is a screening tool built from label data. It errs against the food, never in its favor. It is not medical advice, and the package in your hand always beats a database. When the two disagree, trust the package.