Bone-in chicken drumsticks bought the most usable protein per dollar in our sample, 50.3 grams, even after we docked every food for protein quality. Brown lentils finished a step behind at 49.0. That’s the headline, and it surprised me, because an earlier pass at this table had dried beans running away with it. The raw grams moved. The quality math didn’t forgive the gap.
A few weeks ago I ranked 49 grocery foods by protein per dollar. Whole wheat flour leads that list at 96.0 grams, and dried lentils still sit near the top. The pushback was fair. A gram of protein from beans isn’t the same as a gram from eggs, because your body can’t use all of it. So I took the audited numbers from that study, multiplied each by a published quality score, and rebuilt the ranking. Same prices, same grams, now weighted for what your body actually absorbs.
What is the cheapest source of protein per dollar after adjusting for quality?
Bone-in chicken drumsticks, at 50.3 grams of usable protein per dollar. Chicken scores above 1.0 and we capped every score at 1.0, so they lose nothing to the adjustment. They were 11th on the raw list of this 25-food cut. They’re first now.
Brown lentils are second at 49.0 grams per dollar. They start at 77.7 raw grams and a DIAAS of 0.63. Dried chickpeas take third at 47.1. Whole wheat flour, first on raw grams at 96.0, slides to fourth at 43.2.
Dried pinto beans land at 34.0. They start at 57.6 grams per dollar and get multiplied by a DIAAS of 0.59. That’s still far ahead of ground beef at 11.3. It’s not first.
What is DIAAS, in plain English?
DIAAS stands for Digestible Indispensable Amino Acid Score, the current standard for grading protein quality. It answers two things at once: does a food carry the essential amino acids in the amounts your body needs, and how much of that protein do you actually absorb. A score of 1.0 means the protein covers your needs on its own. A score of 0.5 means the food is short somewhere, so half of that protein doesn’t pull its weight. Eggs and dairy sit above 1.0. Most beans and grains land between 0.4 and 0.65. That spread is the whole story.
How we ran the quality adjustment
Protein per dollar is pulled verbatim from the current 49-food study, the same audited rows behind the plant protein ranking. Each food’s DIAAS is a published value, capped at 1.0 for the math so nothing scores a quality bonus above its raw grams. Quality-adjusted protein per dollar is just the two multiplied together, an estimate of usable protein per dollar.
Every DIAAS value carries a named source, drawn from peer-reviewed work (Nosworthy on cooked pulses, the Phillips 2017 review, Herreman 2020, Rutherfurd 2015, Mathai 2017, Burd 2019) and the FAO 2013 report. The full quality-adjusted CSV is public, one row per food with the score and its citation. One caveat: DIAAS values shift between studies depending on the reference pattern and cooking method, so read these as solid estimates, not lab constants for your exact groceries.
Does the ranking flip when you adjust for quality?
Parts of it flip hard. The top is no longer a bean.

| Rank | Food | Raw g per $1 | DIAAS | Adjusted g per $1 |
|---|---|---|---|---|
| 1 | Chicken drumsticks (bone-in) | 50.3 | 1.08 | 50.3 |
| 2 | Brown lentils (dry) | 77.7 | 0.63 | 49.0 |
| 3 | Chickpeas (dry) | 56.7 | 0.83 | 47.1 |
| 4 | Whole wheat flour | 96.0 | 0.45 | 43.2 |
| 5 | Green split peas (dry) | 73.9 | 0.58 | 42.9 |
| 6 | Red lentils (dry) | 56.0 | 0.63 | 35.3 |
| 7 | Eggs (large) | 34.4 | 1.13 | 34.4 |
| 8 | Black beans (dry) | 58.0 | 0.59 | 34.2 |
| 9 | Navy beans (dry) | 59.9 | 0.57 | 34.1 |
| 10 | Pinto beans (dry) | 57.6 | 0.59 | 34.0 |
| 11 | Mozzarella (part-skim) | 30.1 | 1.14 | 30.1 |
| 12 | Whole milk | 28.5 | 1.14 | 28.5 |
| 13 | Chicken thighs (boneless) | 27.7 | 1.08 | 27.7 |
| 14 | Greek yogurt (nonfat) | 27.5 | 1.14 | 27.5 |
| 15 | Cottage cheese (4%) | 26.3 | 1.14 | 26.3 |
| 16 | Old-fashioned rolled oats | 46.6 | 0.54 | 25.2 |
| 17 | Chicken breast (boneless) | 24.6 | 1.08 | 24.6 |
| 18 | Whole wheat spaghetti | 53.4 | 0.45 | 24.0 |
| 19 | Canned tuna (in water) | 22.4 | 1.00 | 22.4 |
| 20 | Peanut butter | 50.7 | 0.43 | 21.8 |
| 21 | TVP (soy) | 23.4 | 0.90 | 21.1 |
| 22 | White rice (dry) | 29.4 | 0.60 | 17.6 |
| 23 | Tofu (extra firm) | 13.6 | 0.90 | 12.2 |
| 24 | Ground beef (80/20) | 11.3 | 1.11 | 11.3 |
| 25 | 100% whole wheat bread | 20.1 | 0.45 | 9.0 |
DIAAS above 1.0 is shown for reference. It was capped at 1.0 in the math, so eggs, dairy, and drumsticks keep their full raw value and nothing scores a quality bonus.
Why the grains fell and the drumsticks climbed
Chicken drumsticks were the big winner, jumping from 11th in this 25-food cut to first. Their DIAAS is around 1.08 while legumes lose a third or more of their raw value. At $5.46 for the 5 pound bag, they became the best usable-protein deal in the sample once quality entered the math, and they led the animal-protein-only ranking before we adjusted anything.
The cereal grains took a real haircut. Whole wheat flour was first on raw protein per dollar. Adjusted, it slid to fourth. Whole wheat spaghetti dropped nine spots in this cut and peanut butter dropped ten, because both are limited by lysine. Whole wheat bread finishes last here, at 9.0 adjusted grams.
Eggs and dairy climbed without moving an inch. They didn’t get cheaper. Everything around them got discounted while they kept full value, so eggs rose from 13th to 7th in this cut. If you want quality without cooking, that corner of the fridge is where it lives.
Do beans still win if they aren’t complete protein?
They don’t take the trophy anymore. They also don’t collapse.
Beans are short on the sulfur amino acids, methionine and cysteine. Grains have those in surplus and are short on lysine, which beans carry in plenty. Put them together and the holes fill in. A cooked rice-and-bean plate lands around a DIAAS of 0.78, well up from either food alone, and it costs almost nothing. That’s not a lab trick. It’s why beans and rice is a staple on nearly every continent, and our cheapest complete protein pairs piece runs the same idea across other combinations.
Pinto beans at 34.0 quality-adjusted grams still beat ground beef at 11.3 by about 3x. Brown lentils at 49.0 are a step behind drumsticks, not a different sport. The complaint is real. It just doesn’t make the bean bag a bad buy.
How to actually shop this
You don’t need a spreadsheet at the register.
- Let drumsticks or a whole bird be the default meat. They buy more usable protein per dollar than breast, thighs, or any ground meat here.
- Keep lentils and beans as the cheap plant baseline. Brown lentils are second on the adjusted list. A grain on the side handles the amino acids a single bag is light on. The same bags still do fiber work, which is the point of beans scored on protein and fiber at once. On fiber alone, dry pintos return 41.7 grams per dollar and brown lentils 33.7 in the fiber per dollar ranking. A batch of easy black bean tacos or a pot of lentil curry does the work.
- Let eggs and dairy do the no-cook lifting. A plate of rice and beans with an egg on top is cheap, fast, and covers the amino acid gap in one move. The rest of the stove-free lineup is peanut butter, canned beans, and the dairy tubs.
- Don’t overpay for the middle. Peanut butter, whole wheat bread, and ground beef buy less usable protein than the shelf numbers suggest.
The one-sentence version: drumsticks take the quality-adjusted list at 50.3 grams, brown lentils are right behind at 49.0, and a bag of beans is still a long way from a bad protein buy. Want the shopping system instead of another table? The high-protein budget guide turns all of this into a cart.




