Whole wheat flour delivered the most protein per dollar in our 49-food July 2026 grocery sample, at 96.0 grams. That only counts if you bake. Among foods you cook and eat as-is, dry brown lentils lead at 77.7. Bacon sits at the bottom of the same ranking at 9.4. That’s the same nutrient at about ten times the price, and the expensive version is the one everyone photographs on burgers.
Here’s where those numbers come from. Last week I ranked 53 foods by fiber per dollar and the dry goods aisle embarrassed everything else in the store. Several readers asked the obvious follow-up: does the same thing happen with protein? So I built the second spreadsheet. Forty-nine common grocery foods, current prices, one division problem, and a row-level source audit that separates 39 exact USDA matches from 10 close proxies, with no unresolved entries left. The result is a full ranking of the cheapest protein sources in the store, and yes, the beans repeat.
What is the cheapest source of protein per dollar?
Whole wheat flour, at 96.0 grams of protein per dollar. A $3.12 five pound bag holds about 300 grams of protein. The catch is the same one from the fiber study: flour is an ingredient, not dinner.
If you want the cheapest protein you can cook and eat as-is, it’s dry brown lentils at 77.7 grams per dollar. A $1.44 bag holds roughly 112 grams of protein. Dry split peas sit right behind at 73.9.
Bacon finishes 49th out of 49 at 9.4 grams per dollar. Same nutrient as the flour, about ten times the price.

50.3 g after the bone
Chicken drumsticks bought 50.3 grams of protein per dollar even after subtracting the bone. Boneless chicken breast bought 24.6 at the BLS average price in this dataset.
The full ranking: 49 protein sources by protein per dollar
This table contains 39 exact USDA matches and 10 close proxies, with no unresolved protein-source rows. The raw CSV identifies the status and evidence for each row; proxy rows are not independently re-verified. Price entries use July 2026 BLS US city averages where a matching Average Price series exists. Whole-wheat bread still uses its latest published BLS month, May 2026. Foods BLS does not track keep their Walmart store-check.
| Rank | Food | Protein (g per 100g) | Price per 100g | Protein per $1 |
|---|---|---|---|---|
| 1 | Whole wheat flour | 13.2 g | $0.14 | 96.0 g |
| 2 | Brown lentils (dry) | 24.6 g | $0.32 | 77.7 g |
| 3 | Green split peas (dry) | 23.1 g | $0.31 | 73.9 g |
| 4 | Navy beans (dry) | 22.3 g | $0.37 | 59.9 g |
| 5 | Black beans (dry) | 21.6 g | $0.37 | 58.0 g |
| 6 | Pinto beans (dry) | 21.4 g | $0.37 | 57.6 g |
| 7 | Chickpeas (dry) | 20.5 g | $0.36 | 56.7 g |
| 8 | Red lentils (dry) | 23.9 g | $0.43 | 56.0 g |
| 9 | Whole wheat spaghetti | 13.9 g | $0.26 | 53.4 g |
| 10 | Peanut butter | 22.2 g | $0.44 | 50.7 g |
| 11 | Chicken drumsticks (bone-in) | 18.1 g | $0.24 | 50.3 g |
| 12 | Old-fashioned rolled oats | 13.2 g | $0.28 | 46.6 g |
| 13 | Spaghetti (regular, dry) | 13.0 g | $0.30 | 42.9 g |
| 14 | Dry roasted peanuts | 24.4 g | $0.61 | 39.8 g |
| 15 | Brown rice (dry) | 7.5 g | $0.21 | 36.6 g |
| 16 | Pearled barley (dry) | 9.9 g | $0.27 | 36.3 g |
| 17 | Eggs (large) | 12.6 g | $0.37 | 34.4 g |
| 18 | Sunflower seed kernels | 20.8 g | $0.66 | 31.7 g |
| 19 | Canned black beans | 6.0 g | $0.20 | 30.1 g |
| 20 | Mozzarella (low-moisture part-skim) | 23.8 g | $0.79 | 30.1 g |
| 21 | White rice (long grain, dry) | 7.1 g | $0.24 | 29.4 g |
| 22 | Whole milk | 3.2 g | $0.11 | 28.5 g |
| 23 | Chicken thighs (boneless, skinless) | 19.7 g | $0.71 | 27.7 g |
| 24 | Greek yogurt (plain, nonfat) | 10.2 g | $0.37 | 27.5 g |
| 25 | Rotisserie chicken (whole, cooked) | 28.9 g | $0.59 | 26.7 g |
| 26 | Cottage cheese (4%) | 11.1 g | $0.42 | 26.3 g |
| 27 | Whole chicken (raw) | 18.6 g | $0.44 | 25.6 g |
| 28 | Pork shoulder butt roast (boneless) | 17.4 g | $0.69 | 25.2 g |
| 29 | Chicken breast (boneless, skinless) | 22.5 g | $0.92 | 24.6 g |
| 30 | TVP (textured vegetable protein) | 52.2 g | $2.23 | 23.4 g |
| 31 | Canned kidney beans | 5.2 g | $0.22 | 23.4 g |
| 32 | Pork loin chops (boneless) | 21.6 g | $0.94 | 23.0 g |
| 33 | Canned tuna (chunk light, in water) | 19.4 g | $0.87 | 22.4 g |
| 34 | Canned chickpeas | 4.9 g | $0.22 | 22.0 g |
| 35 | Canned pink salmon | 19.7 g | $0.91 | 21.6 g |
| 36 | Quinoa (dry) | 14.1 g | $0.66 | 21.5 g |
| 37 | Frozen tilapia fillets | 20.1 g | $0.96 | 20.9 g |
| 38 | Frozen green peas | 5.2 g | $0.26 | 20.4 g |
| 39 | Sardines (canned in oil, drained) | 24.6 g | $1.22 | 20.2 g |
| 40 | 100% whole wheat bread | 12.5 g | $0.62 | 20.1 g |
| 41 | Cheddar cheese | 22.9 g | $1.27 | 18.1 g |
| 42 | Frozen shelled edamame | 11.2 g | $0.62 | 18.0 g |
| 43 | Ground turkey (93/7) | 18.7 g | $1.20 | 15.6 g |
| 44 | Almonds | 21.2 g | $1.43 | 14.8 g |
| 45 | Tofu (extra firm) | 10.0 g | $0.74 | 13.6 g |
| 46 | Tempeh | 20.3 g | $1.53 | 13.2 g |
| 47 | Ground beef (80/20) | 17.2 g | $1.52 | 11.3 g |
| 48 | Ground beef (93/7) | 20.9 g | $1.86 | 11.2 g |
| 49 | Bacon | 13.7 g | $1.45 | 9.4 g |
Protein per $1 accounts for edible portion on bone-in items, so drumsticks are scored on the meat, not the skeleton.
How we ran the numbers
Same playbook as the fiber study, because it survived an audit and I’m not messing with it:
- Protein content: the current row-level source audit links 39 of 49 values to exact USDA FoodData Central records and 10 to close proxies. No rows are left unresolved. A proxy differs from the priced food in a material detail such as form, cut, or preparation, so it is not an exact match and is not counted as independently re-verified. TVP is the clearest example: USDA publishes no TVP record at all, so the row now carries 52.17 grams per 100 grams straight from the manufacturer label, up from the 50.0 an earlier label reported. The CSV documents every status and the reason for each proxy result.
- Prices: BLS Average Price series where a matching APU exists, using the latest published month as of September 5, 2026. For most mapped foods that is July 2026. Whole-wheat bread’s series last published in May 2026. August 2026 had not been released yet. Dried beans use APU0000714233, “Beans, dried, any type, per lb,” which is a category average rather than a pinto-specific series. Foods BLS does not track keep their audited Walmart store-check. Every CSV row labels which basis it uses.
- The math: total grams of protein in the package, divided by the package price. For bone-in items we only counted the edible portion, using USDA refuse data: a raw whole chicken yields about 61 percent edible meat and skin, drumsticks lose 33 percent to bone, and a rotisserie chicken gives up 33 percent to bone and 13 percent to skin if you’re eating the meat.
One basis rule matters enough to spell out. Everything is measured as purchased: raw meat, dry beans, the package in your cart. Cooked chicken shows more protein per 100 grams than raw chicken because roasting drives off water, not because protein appeared from nowhere. Ranking cooked values against raw prices is how these comparisons usually go wrong, so we didn’t.
The full dataset is public. You can download the raw CSV here, read the site’s grocery-data methodology, and check the calculations yourself. Same files sit on a mirror on Hugging Face (CC-BY-4.0). The protein and fiber value planner lets you compare any two rows or build a basket without wrestling the CSV. The weekly food-cost planner takes the next step and scales our five audited 50-gram days for the number of people you’re feeding.
Source audit updated July 2026: 39 exact USDA matches and 10 close proxies, with no unresolved rows. Proxy rows are not independently re-verified. Next scheduled price re-audit: October 2026. Monthly BLS checks flag drift in between.
What the numbers actually say
The dry goods aisle won again. Seven of the top eight foods are dried legumes, and whole wheat flour is the only thing breaking the run, this time from the number one seat. Same aisle that ran the fiber table. Flour takes the crown at 96.0 grams of protein per dollar if you bake. Dry brown lentils are the food you can put in a pot tonight, at 77.7. One $1.44 bag holds roughly 112 grams of protein, more than twice the FDA’s 50 gram Daily Value. That’s a labeling benchmark, not a personal target. Our Daily Value explainer unpacks the 50 gram figure without pretending one federal label number fits every human. Because the same aisle wins both spreadsheets, we scored the beans on protein and fiber per dollar at once, where dry split peas now lead at 144.9 combined grams.
Chicken drumsticks are the meat counter’s best-kept secret in this sample. At $1.09 per pound in the 5 pound bag, drumsticks deliver about 50 grams of protein per dollar even after we subtracted a third of the weight for bone. That’s about double chicken breast, which lands at 24.6 using the July 2026 BLS average in this dataset. Breast is leaner and easier; drumsticks bought far more protein per dollar here. Your call.
Eggs are the easiest animal protein, not the cheapest. At $2.19 a dozen (July 2026 BLS average), eggs score 34 grams per dollar. Only drumsticks beat them among animal foods without handing you a cutting board and a raw chicken. Milk quietly rides right behind at 28.5; a $4.31 gallon still holds about 123 grams of protein, which surprised me enough to check it twice.
Dried still beats canned, just not by the old three-to-one poster. Dry brown lentils, 77.7 grams per dollar; canned black beans, 30.1. Canned still beats every ground meat in the store, so keep the shelf stocked for lazy nights. The gap is the price of convenience. We priced it bean by bean in canned versus dry beans.
Ground beef is a rough way to buy protein. The bottom three spots are 80/20 ground beef, 93/7 ground beef, and bacon, all between 9.4 and 11.3 grams per dollar. Nobody buys bacon for protein, but plenty of people believe a pound of ground beef is the default protein move. At $6.89 a pound, every dollar you hand over buys less protein than the same dollar spent on canned beans, frozen peas, or a box of spaghetti. Point that dollar at fiber instead and it stretches even further: the 15 cheapest fiber foods still run up to 77.8.
If you just want the winner from each corner of the store, here’s the shortlist:
| Category | Best value | Protein per $1 |
|---|---|---|
| Legumes | Brown lentils (dry) | 77.7 g |
| Meat and poultry | Chicken drumsticks (bone-in) | 50.3 g |
| Eggs and dairy | Eggs (large) | 34.4 g |
| Fish | Canned tuna (chunk light, in water) | 22.4 g |
That shortlist is the quick answer. The department-by-department answer is messier and more useful. We broke out animal proteins and the narrower meat counter ranking because a broad category can hide the cheaper cut. We did the same for dairy protein, plant protein, and shelf-stable pantry protein, where convenience changes what “cheap” looks like.
Three everyday questions deserved their own math: what one dollar of protein buys, whether eggs are actually cheap protein, and which no-cook proteins still earn their shelf space. The same 49 foods, inverted into cents per gram and dollars per pound of protein, live on the cheapest protein per gram ranking. For meals rather than ingredients, the cheapest complete protein pairs show what happens when the spreadsheet finally has to become dinner.

Five dollars of dry pinto beans buys 288 grams of protein in this dataset, and five dollars of bacon buys 47.
Does tofu have more protein than chicken?
No, and this question drives real traffic, so here are the numbers side by side:
| Protein per 100g | Protein per $1 | |
|---|---|---|
| Tofu (extra firm) | 10.0 g | 13.6 g |
| Chicken breast (boneless, skinless) | 22.5 g | 24.6 g |
Raw chicken breast carries more than twice the protein per 100 grams and nearly double the protein per dollar. Tofu is fine. It’s just not a protein bargain, and neither is tempeh at 13.2 grams per dollar. The cheap plant proteins are lentils, beans, and peanut butter, all of which may also help keep you full between meals. If fullness is the thing you’re actually shopping for, we compared high protein vs high fiber for satiety and the answer isn’t one or the other.
The fine print on plant protein
One honest note before you replace your entire cart with pinto beans. Plant foods vary in their essential amino acid profiles, but you don’t need to pair specific foods at the same meal. MedlinePlus recommends eating a varied mix of beans, lentils, soy foods, nuts, seeds, and whole grains across a vegetarian diet. Beans and rice remain a cheap, practical combination, and our beans and rice complete protein piece explains the kitchen side without turning lunch into biochemistry homework.
Also worth saying: ranking low doesn’t make a food bad. Sardines, tempeh, and Greek yogurt bring things to the table that a bag of pinto beans never will. This list answers one question, where each protein dollar goes furthest, and nothing else. We ran the separate quality-adjusted protein-per-dollar ranking when readers reasonably pointed out that raw grams don’t all perform the same job.

How to actually use this
Don’t build a bean-only menu out of spite. Let the top of the table carry the cheap baseline and buy the rest because you like eating it.
- Anchor the pantry with two bags. Lentils and split peas, about $2.86 total, hold as much protein as you used to expect from a much louder pile of meat.
- Make drumsticks or a whole bird the default meat. Both land in the top tier of animal foods. If dinner needs to be done already, the rotisserie chicken at 27 grams per dollar still beats raw breast at average prices.
- Keep eggs, milk, and cottage cheese doing quiet work. All three sit in the 26 to 34 range with zero prep drama. If you’re deciding between the tubs, our cottage cheese vs Greek yogurt breakdown settles it, and the cheapest breakfast staples ranked covers what else earns a place before noon.
- Feeding a crowd? We wrote a full playbook on low-cost protein for large families that pairs well with this table.
- Want to see the ranking turned into actual days? Our 50-gram protein cost study prices five grocery and restaurant scenarios meal by meal.
- Already stuck at the drive-thru? The fast-food protein-per-dollar ranking prices 30 menu items and shows exactly how expensive convenience gets.
- Want the shopping system instead of another table? The high-protein budget guide turns the same dataset into a cart, pantry, and weekly backbone.
The whole study comes down to one sentence, and it’s nearly the same sentence as last time: the highest-return protein in this sample lives in the dry goods aisle at about a quarter per 100 grams, the meat counter’s bargain is the humble drumstick, and the stuff at the bottom of the list is the stuff the ads are selling. The spreadsheet is public, the math is one division problem, and the beans don’t care whether anyone photographs them.




