Methodology
How we grade food
One formula per category, published in full. Every factor is scored 0–100 against a fixed benchmark, multiplied by its weight, and ranked. If you disagree with a grade, this page tells you exactly which input to argue with.
The formula, per board
Proteins
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 25 g protein per 100 kcal | ×25 |
| Protein quality (DIAAS) | DIAAS 115 (capped) | ×20 |
| Micronutrients | micronutrient panel %DV sum ÷ 400 | ×30 |
| Omega-3 | 1.5 g omega-3 per 100 kcal | ×10 |
| Clean label | sat fat ≤ 8 g, sodium ≤ 800 mg per 100 kcal | ×15 |
Vegetables
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 15 g protein per 100 kcal | ×10 |
| Fiber | 12 g fiber per 100 kcal | ×25 |
| Micronutrients | micronutrient panel %DV sum ÷ 600 | ×40 |
| Low energy density | energy density bonus (lower kcal wins) | ×10 |
| Clean label | sodium ≤ 800 mg per 100 kcal | ×15 |
Carbohydrates
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 10 g protein per 100 kcal | ×15 |
| Fiber | 8 g fiber per 100 kcal | ×30 |
| Micronutrients | micronutrient panel %DV sum ÷ 200 | ×25 |
| Whole food | whole-food status (100 / 50 / 0) | ×10 |
| Clean label | sodium ≤ 600 mg per 100 kcal + whole-food bonus | ×20 |
Fats & Oils
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Healthy fats | 12 g unsaturated fat (MUFA + PUFA) per 100 kcal | ×30 |
| Omega-3 | 3 g omega-3 per 100 kcal | ×10 |
| Micronutrients | micronutrient panel %DV sum ÷ 200 | ×15 |
| Low saturated fat | saturated fat ≤ 10 g per 100 kcal | ×25 |
| Clean label | sodium ≤ 600 mg per 100 kcal + intact-food bonus | ×20 |
Fruits
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Fiber | 12 g fiber per 100 kcal | ×25 |
| Micronutrients | micronutrient panel %DV sum ÷ 400 | ×40 |
| Low energy density | energy density bonus (lower kcal wins) | ×15 |
| Clean label | sodium ≤ 400 mg per 100 kcal + whole-fruit bonus | ×20 |
Dairy & Eggs
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 25 g protein per 100 kcal | ×30 |
| Calcium | 30% DV calcium per 100 kcal | ×20 |
| Low saturated fat | saturated fat ≤ 8 g per 100 kcal | ×20 |
| Micronutrients | micronutrient panel %DV sum ÷ 200 | ×15 |
| Clean label | sodium ≤ 800 mg per 100 kcal + cultured bonus | ×15 |
Fast Food
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 15 g protein per 100 kcal | ×20 |
| Fiber | 6 g fiber per 100 kcal | ×10 |
| Micronutrients | not on chain labels — scored 0, disclosed | ×10 |
| Low saturated fat | saturated fat ≤ 8 g per 100 kcal | ×20 |
| Low sodium | sodium ≤ 800 mg per 100 kcal | ×20 |
| Low sugar | sugar ≤ 20 g per 100 kcal | ×20 |
Snacks & Candy
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 15 g protein per 100 kcal | ×20 |
| Fiber | 6 g fiber per 100 kcal | ×10 |
| Micronutrients | not on manufacturer labels — scored 0, disclosed | ×10 |
| Low saturated fat | saturated fat ≤ 8 g per 100 kcal | ×20 |
| Low sodium | sodium ≤ 800 mg per 100 kcal | ×20 |
| Low sugar | sugar ≤ 25 g per 100 kcal | ×20 |
Beverages
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 15 g protein per 100 kcal | ×5 |
| Fiber | 6 g fiber per 100 kcal | ×5 |
| Micronutrients | minimal panel — mostly zeros, disclosed | ×10 |
| Low saturated fat | saturated fat ≤ 8 g per 100 kcal | ×10 |
| Low sodium | sodium ≤ 800 mg per 100 kcal | ×20 |
| Low sugar | sugar ≤ 25 g per 100 kcal | ×50 |
Cereals
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 10 g protein per 100 kcal | ×15 |
| Fiber | 8 g fiber per 100 kcal | ×30 |
| Micronutrients | micronutrient panel %DV sum ÷ 200 | ×20 |
| Whole food | whole-food status (100 / 50 / 0) | ×15 |
| Clean label | sodium ≤ 600 mg per 100 kcal + whole-food bonus | ×20 |
Breads
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 10 g protein per 100 kcal | ×15 |
| Fiber | 8 g fiber per 100 kcal | ×30 |
| Micronutrients | micronutrient panel %DV sum ÷ 200 | ×20 |
| Whole food | whole-food status (100 / 50 / 0) | ×15 |
| Clean label | sodium ≤ 600 mg per 100 kcal + whole-food bonus | ×20 |
Cheeses
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 25 g protein per 100 kcal | ×25 |
| Calcium | 30% DV calcium per 100 kcal | ×25 |
| Low saturated fat | saturated fat ≤ 8 g per 100 kcal | ×25 |
| Micronutrients | micronutrient panel %DV sum ÷ 200 | ×10 |
| Clean label | sodium ≤ 800 mg per 100 kcal + cultured bonus | ×15 |
Milks
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 25 g protein per 100 kcal | ×25 |
| Calcium | 30% DV calcium per 100 kcal | ×30 |
| Low saturated fat | saturated fat ≤ 8 g per 100 kcal | ×15 |
| Micronutrients | micronutrient panel %DV sum ÷ 200 | ×15 |
| Clean label | sodium ≤ 800 mg per 100 kcal + cultured bonus | ×15 |
Condiments & Sauces
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 15 g protein per 100 kcal | ×5 |
| Fiber | 6 g fiber per 100 kcal | ×5 |
| Micronutrients | minimal panel — mostly zeros, disclosed | ×10 |
| Low saturated fat | saturated fat ≤ 8 g per 100 kcal | ×15 |
| Low sodium | sodium ≤ 800 mg per 100 kcal | ×40 |
| Low sugar | sugar ≤ 25 g per 100 kcal | ×25 |
Seafood
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 25 g protein per 100 kcal | ×25 |
| Protein quality (DIAAS) | DIAAS 115 (capped) | ×15 |
| Micronutrients | micronutrient panel %DV sum ÷ 400 | ×25 |
| Omega-3 | 1.5 g omega-3 per 100 kcal | ×20 |
| Clean label | sat fat ≤ 8 g, sodium ≤ 800 mg per 100 kcal | ×15 |
Plant Proteins
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 20 g protein per 100 kcal | ×30 |
| Protein quality (DIAAS) | DIAAS 115 (capped) | ×20 |
| Fiber | 8 g fiber per 100 kcal | ×15 |
| Micronutrients | micronutrient panel %DV sum ÷ 300 | ×20 |
| Clean label | sat fat ≤ 8 g, sodium ≤ 800 mg per 100 kcal | ×15 |
Nuts & Seeds
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Healthy fats | 12 g unsaturated fat (MUFA + PUFA) per 100 kcal | ×30 |
| Omega-3 | 3 g omega-3 per 100 kcal | ×10 |
| Micronutrients | micronutrient panel %DV sum ÷ 200 | ×15 |
| Low saturated fat | saturated fat ≤ 10 g per 100 kcal | ×25 |
| Clean label | sodium ≤ 600 mg per 100 kcal + intact-food bonus | ×20 |
Breakfast
| Factor | Benchmark (100 = max) | Weight |
|---|---|---|
| Protein | 15 g protein per 100 kcal | ×20 |
| Fiber | 6 g fiber per 100 kcal | ×10 |
| Micronutrients | minimal panel — mostly zeros, disclosed | ×10 |
| Low saturated fat | saturated fat ≤ 8 g per 100 kcal | ×20 |
| Low sodium | sodium ≤ 800 mg per 100 kcal | ×20 |
| Low sugar | sugar ≤ 25 g per 100 kcal | ×20 |
Tiers
After scoring, foods are ranked within their board. The top 10% earn S, the next 20% A, the next 30% B, the next 25% C, and the bottom 15% D. Tiers are relative — a B in vegetables and a B in fast food are not the same thing.
The denominator: per 100 calories
Scores are computed per 100 calories (nutrient density), not per 100 grams and not per serving. This rewards foods that deliver nutrition without much energy — and punishes calorie-dense foods, even beloved ones. Read why the denominator flips rankings.
Zero-calorie items: a handful of drinks and condiments (sparkling water, diet sodas, hot sauce) list 0 calories, which breaks per-100-calorie math. For those, the formula floors the denominator at 1 calorie — so they score on sodium, sugar, and everything else, honestly. Water still wins.
October 2026 formula change — fats board: the "healthy fats" factor now credits MUFA + PUFA (all unsaturated fat), capped at 12 g per 100 kcal. PUFA is derived as total fat minus saturated fat minus MUFA from the same label values. Previously the factor counted MUFA alone, which underrated PUFA-rich foods like walnuts.
Data sources
- Whole foods (proteins, vegetables, carbs, fats, fruits, dairy, seafood, plant proteins, nuts & seeds, cheeses, milks, cereals, breads): USDA FoodData Central — SR Legacy and Foundation reference values, per 100 g, accessed October 2026. Rounded to sensible precision.
- Fast food & snacks: the chains' and manufacturers' own published nutrition labels, per serving as labeled, accessed October 2026. Labels change — if a number looks stale, check the source.
- Beverages, condiments, breakfast, branded cereals & breads: manufacturer-published nutrition labels, converted to per 100 g (beverages per 100 ml), accessed October 2026.
- DIAAS (protein quality): published DIAAS values, capped at 115 for scoring. Where only an analog exists, the value is flagged as approximate in our research notes.
Limitations
- Chain labels are per serving and recipes vary by location and over time.
- Missing micronutrient values are treated as zero and disclosed — fast food and snack labels simply don't list them.
- The formula encodes judgments (e.g., how much saturated fat matters). Those judgments are visible above; change the weights and the grades change.
A note before you eat your screen: grades are computed from published nutrition data with a transparent formula. They are a starting point for thinking about food, not medical advice. Talk to your doctor or a registered dietitian about your diet.