Every item gets a letter from A to F. Here is exactly how, and where the numbers come from.
The score answers one question: how much nutrition does this give you for the calories it costs? An item packed with protein, fiber, and vitamins scores well. An item that is mostly salt, saturated fat, and sugar scores badly. Size is taken out of it, so a large item cannot win just by being large.
Unusually nutrient-dense for fast food.
More nutrition per calorie than most of the menu.
About typical for fast food.
Little nutrition for the calories.
Its salt, saturated fat and sugar outweigh what it provides.
The letter comes from a nutrient-density score (an index called NRF9.3), a nutrient profiling model published in the peer-reviewed nutrition literature and validated against the US government's Healthy Eating Index. It adds up nine nutrients worth encouraging — protein, fiber, vitamins A, C and E, calcium, iron, magnesium, and potassium — each as a share of its daily value and capped at 100%, then subtracts three worth limiting: salt, saturated fat, and sugar. Everything is measured per 100 calories.
The cap matters. Without it, one heavily fortified nutrient would outweigh everything else, and a vitamin-sprayed snack would beat real food. With it, an item has to be broadly nourishing rather than spiked.
Nutrition comes from USDA FoodData Central, the US Department of Agriculture's public food composition database. It is public domain and anyone can check it. We use its SR Legacy and FNDDS datasets, which between them carry named restaurant items with full nutrient panels — 166 of them across the chains on this site.
Prices are read from each chain's own ordering system and vary by restaurant, so we say which store and when.
Total sugar, not added sugar. The published model uses added sugar. USDA's older records often do not separate it out, so we use total sugar. For fast food the difference is small — there is little natural sugar in a burger — but it would unfairly mark down anything fruit-based.
A 250-calorie floor on what counts as a meal. Scoring per calorie structurally favors small, light things. Without a floor, “the healthiest thing at McDonald’s” comes back as a yogurt parfait or a salad with the chicken left out. Neither is lunch. The floor is our judgement, not part of the published model, and we would rather say so than hide it.
Sauces, sides, and family packs are labelled and filtered. A 15-calorie sauce packet is not the lowest calorie meal on a menu, and a party pack for twelve is not a healthy choice for one person. Ranking pages only consider items you would order and eat yourself.
Most items on this site are not in USDA’s database at all. What they have instead is the chain’s own printed Nutrition Facts panel — and that panel cannot produce the score above, for a reason worth knowing: the 2016 US labeling rules removed vitamins A and C from the panel and put vitamin D and potassium in their place. Vitamin E and magnesium were never required. A modern label therefore carries five of the nine nutrients the index needs.
So we score those items on the five it does carry — protein, fiber, calcium, iron, and potassium — against the same three to limit, per 100 calories. We call it a label score and we never mix it into a nutrient-density ranking, because it is close to that score without being it.
How close is measurable. On the 166 items where both can be computed, the two correlate at r = 0.85 (rank correlation 0.79), and the label score runs about 7 points lower. But it puts only 6 of the same 10 items in its top ten — because it cannot see the vitamin A and C that put salads and fruit there. Close enough to be useful; not close enough to be the same number.
Two chains do hold vitamins A and C in the data behind their labels, which would lift the agreement to r = 0.99. We do not use them. Their own label configuration marks those two as not displayed, and the values are unit-ambiguous — 5.75 reads equally as 5.75 micrograms or 5.75% of a daily value, a ninefold difference. A number we cannot check is a number we will not publish.
The label score is only shown for real food. Any score computed per 100 calories goes strange at the bottom of the scale: ungated, this one rates a five-calorie black coffee at +116. It is applied only to items the classifier treats as a single-serving food, the same rule the pages above use.