MacroThriftMacroThrift

Compare

Cheapest vs leanest protein: what to buy for bulking vs cutting

Cheap protein is often carb- or fat-dense. Here's the cost-vs-calorie trade-off for common foods, so you buy the right one for your goal.

"Cheapest protein" and "leanest protein" sound like the same question. In this dataset they are close to opposite. The five cheapest foods per 10 g of protein are oats at $0.089, peanut butter at $0.220, lentils at $0.222, tofu at $0.235 and black beans at $0.247. The five leanest, measured as calories carried per gram of protein, are canned tuna at 4.5, turkey breast at 4.6, tilapia at 4.8, whey at 5.0 and chicken breast at 5.3. The two lists share no items at all.

The gap runs wide in both directions. Buying 100 g of protein from oats costs $0.89 and drags 2,302 kcal along with it (100 / 16.9 = 5.92 servings of 100 g, times 389 kcal each). Buying the same 100 g of protein from canned tuna costs $4.23 and brings 446 kcal. That is 4.75 times the money for 1,856 fewer calories.

Which side of that trade is worth taking depends entirely on a goal you have already chosen for yourself. If you are eating in a calorie surplus, the calories riding along with cheap protein are doing work you would otherwise pay for separately. If you are in a deficit, those same calories are the scarce resource, and paying more per gram of protein buys back room. This is a cost and shopping page, not health advice, and it does not tell you which goal to pick. The prices are maintained, representative US grocery estimates joined to public nutrition data, not live or store specific figures, so sanity-check them against your own shelf. All figures are per 100 g of the food as listed, except whey, which is a 30 g scoop.

Two foods can both be "high protein" yet be opposite buys. Cheapest means lowest dollars per gram of protein; leanest means most protein per calorie. They rarely agree, so your goal decides the pick. Longer bar = better for that goal.

Cheapest per gram

bulking

Lowest cost per gram of protein

  1. 1Oats (dry)$0.0089
  2. 2Soybeans (dried, raw)$0.0096
  3. 3Wheat flour (all-purpose)$0.0117
  4. 4Vital wheat gluten$0.0133
  5. 5Peanuts (raw)$0.0172
  6. 6Split peas (cooked)$0.0217

Leanest

cutting

Most protein per calorie

  1. 1Canned tuna (in water)0.224
  2. 2Turkey breast (raw)0.216
  3. 3Egg whites (liquid)0.210
  4. 4Tilapia (raw)0.208
  5. 5Vital wheat gluten0.203
  6. 6Whey protein (1 scoop)0.200

Cutting? Lean toward the right column. Bulking or just saving money? The left column wins. To hit your exact target under a calorie cap, mixing both, use the cheapest-protein planner.

About these numbers. Costs are computed from public nutrition data joined to maintained, representative US grocery prices, not live per-store pricing. Your shelf prices will differ. The ranking between foods is far more stable than the absolute dollars, so treat the order as the signal and re-run your own numbers in the planner. Meat and fish figures are raw weight, and cooking drives water off, so cooked cost per gram of protein runs higher.

Two rankings, almost no overlap

Rank the sixteen foods by dollars per 10 g of protein and again by calories per gram of protein, and the extremes swap ends. Oats are 1st on price at $0.089 and 15th of 16 on leanness at 23.0 kcal per gram of protein. Canned tuna is 1st on leanness at 4.5 and 13th of 16 on price at $0.423. Peanut butter is 2nd cheapest at $0.220 and dead last on leanness at 23.5.

Three foods place respectably on both lists. Whey is 7th of 16 on price at $0.312 and 4th on leanness at 5.0. Cottage cheese is 6th on price at $0.273 and 7th on leanness at 7.6. Tofu is 4th on price at $0.235 and 8th on leanness at 8.5. Those three are the useful middle of the table, and everything below turns on them.

The spread is worth stating plainly. Across the whole table, the cost of 100 g of protein runs from $0.89 to $4.23, a 4.75x range. The calories that come attached run from 446 to 2,302, a 5.2x range. Those are not small differences you can ignore in a weekly shop.

Six foods beat the other ten on both axes

Compare every food against every other and only six survive, meaning nothing in the table is both cheaper and leaner than they are. In order of price: oats ($0.089, 23.0), lentils ($0.222, 12.9), tofu ($0.235, 8.5), cottage cheese ($0.273, 7.6), whey ($0.312, 5.0) and canned tuna ($0.423, 4.5). Those six are the whole decision. The other ten are beaten on both numbers at once.

The losses are specific. Peanut butter loses to oats by $0.131 per 10 g of protein and by 0.5 kcal per gram of protein. Black beans lose to lentils by $0.025 and 1.9. Edamame loses to tofu by $0.098 and 1.6. Milk and eggs both lose to cottage cheese, by $0.080 and 7.1 for milk, and $0.084 and 3.7 for eggs. Greek yogurt and chicken breast both lose to whey, by $0.038 and 0.9 for yogurt, and $0.088 and 0.3 for chicken.

Two of these are close enough to flip. Turkey loses to tuna by only $0.015 per 10 g of protein and 0.1 kcal per gram of protein, tilapia by $0.052 and 0.3. A sale on either one moves it onto the frontier, so treat those three as interchangeable and buy whichever is marked down. Ground beef 90/10 is the opposite case: it is the most expensive food in the table at $0.550 and loses to tofu by $0.315 and 0.3 kcal per gram of protein. No ordinary sale closes a 31.5 cent gap.

What a calorie actually costs you

Put the six survivors on a common basis of 100 g of protein and the price of leanness becomes explicit. Oats: $0.89 and 2,302 kcal. Lentils: $2.22 and 1,289 kcal. Tofu: $2.35 and 847 kcal. Cottage cheese: $2.73 and 764 kcal. Whey: $3.13 and 500 kcal. Tuna: $4.23 and 446 kcal.

Now read the steps between rungs. Oats to lentils costs $1.33 and removes 1,013 kcal, which is 13 cents per 100 kcal. Lentils to tofu costs 13 cents and removes 442 kcal, which is 3 cents per 100 kcal and the single best trade on the board. Tofu to whey costs 77 cents and removes 347 kcal, or 22 cents per 100 kcal. Whey to tuna costs $1.10 and removes only 54 kcal, which works out to $2.05 per 100 kcal, roughly 70 times worse than the lentils to tofu step.

That last rung is the important warning. The leanest food in the table is not the leanest food per dollar, and buying tuna to shave 54 kcal off a 100 g protein day is close to the worst use of a grocery dollar available here. Cottage cheese is also worth a caveat: it survives the dominance test, but the tofu to cottage cheese step alone runs 45 cents per 100 kcal, worse than skipping it and going straight to whey. Buy cottage cheese because you want a whole food you can eat by the bowl, not because it is the efficient rung.

If the goal you have chosen is a calorie surplus

In a surplus the attached calories are not a cost, they are half the point, which means the leanness column stops mattering and the price column takes over completely. Oats at $0.089 per 10 g of protein are 2.5 times cheaper than the next food in the table, and they deliver 389 kcal per 100 g while doing it. Nothing else in this dataset competes.

A worked day: 200 g dry oats (33.8 g protein, 778 kcal, $0.30), 100 g peanut butter (25 g, 588 kcal, $0.55), 200 g cooked lentils (18 g, 232 kcal, $0.40), 200 g firm tofu (34 g, 288 kcal, $0.80) and 500 g of 2% milk (17 g, 250 kcal, $0.60). That totals 127.8 g of protein and 2,136 kcal for $2.65, which is $0.207 per 10 g of protein and 16.7 kcal per gram of protein.

One correction to how peanut butter is usually shelved. At $0.220 per 10 g of protein it is priced like a protein food, but at 23.5 kcal per gram of protein and 50 g of fat per 100 g it behaves like a fat. Buy it as a calorie source that happens to carry 25 g of protein, and note that oats beat it on both numbers, so it should never be the reason your protein column adds up.

If the goal you have chosen is a calorie deficit

In a deficit the ranking inverts and the question becomes how few calories you can hit your protein target with, and what that costs. Whey is the pivot: 5.0 kcal per gram of protein at $0.312 per 10 g, which is cheaper than chicken ($0.400, 5.3), Greek yogurt ($0.350, 5.9), tuna ($0.423, 4.5), turkey ($0.438, 4.6) and tilapia ($0.475, 4.8). It is the cheapest way in this table to get under 6 kcal per gram of protein.

A worked day at a matched protein level: one 30 g scoop of whey (24 g protein, 120 kcal, $0.75), 200 g cottage cheese (22 g, 168 kcal, $0.60), 200 g raw chicken breast (45 g, 240 kcal, $1.80), 150 g tofu (25.5 g, 216 kcal, $0.60) and 100 g Greek yogurt (10 g, 59 kcal, $0.35). Total 126.5 g of protein and 803 kcal for $4.10, or $0.324 per 10 g of protein and 6.35 kcal per gram of protein.

Set that beside the surplus day and the exchange rate is clear. Nearly identical protein (126.5 g versus 127.8 g), 1,333 fewer calories, and $1.45 more per day. That is about 11 cents per 100 kcal removed, or $43.50 over thirty days. Whether that is a good deal is your call, but at least it is a number rather than a feeling.

What the ratios hide

Volume is the first thing a per-dollar ratio hides. To get 100 g of protein from one food you need 592 g of dry oats, 588 g of tofu, 909 g of cottage cheese, 1,000 g of Greek yogurt, 1,111 g of cooked lentils, 1,124 g of black beans, or 2,941 g of 2% milk (roughly 2.9 litres). Against that: 385 g of canned tuna, 444 g of raw chicken breast, or 125 g of whey powder, which is 4.2 scoops. Milk is priced at a reasonable $0.353 per 10 g of protein, but three litres a day is why it is a beverage and not a protein staple.

Preparation basis is the second. Chicken, turkey, tilapia and ground beef are listed at raw weights; canned tuna in water is already ready to eat. Cooking drives off water, so 444 g of raw chicken lands on the plate as noticeably less. The dollar per 10 g of protein figure stays valid for shopping because it is anchored to what you buy at the counter, but do not set 100 g of raw chicken next to 100 g of cooked lentils and read them as the same plate.

Price stability is the third. These are representative national estimates, not live or store-specific prices, so treat the absolute dollar figures as approximate. The ordering is much more durable than the level: a 20 percent price swing does not move oats out of first place at $0.089, and it does not rescue ground beef from last at $0.550. It can easily reshuffle turkey, tilapia and tuna, which sit within $0.052 of one another.

The rule to use in the aisle

Do not try to optimise both axes at once. Pick a ceiling for calories per gram of protein based on the goal you have already chosen, then buy the cheapest food in the table that clears it. That single rule reproduces the entire efficient frontier.

Ceiling of 25 kcal per gram of protein: oats at $0.089. Ceiling of 15: lentils at $0.222. Ceiling of 10: tofu at $0.235. Ceiling of 8: cottage cheese at $0.273. Ceiling of 6: whey at $0.312. Ceiling of 4.8: canned tuna at $0.423. Every rung on that ladder is a food that nothing else in the table beats on both price and leanness at once.

In practice most people in a surplus should be shopping around the 15 to 25 ceiling and paying $0.089 to $0.222, and most people in a deficit should be shopping around the 6 to 10 ceiling and paying $0.235 to $0.312. The zone below 5 kcal per gram of protein costs $0.423 and up, and buys very little additional leanness for the money. Verify these prices against your own store before you build a weekly shop on them.

FAQ

What is the cheapest source of protein in this dataset?
Dry oats, at $0.089 per 10 g of protein, which is 2.5 times cheaper than the next food (peanut butter at $0.220). The catch is 23.0 kcal per gram of protein, second worst in the table, and you would need 592 g of dry oats to reach 100 g of protein. That makes oats excellent if you have chosen a calorie surplus and poor if you have chosen a deficit.
What is the leanest protein here, and is it worth the price?
Canned tuna in water is leanest at 4.5 kcal per gram of protein, but it costs $0.423 per 10 g of protein, which ranks 13th of 16 on price. Moving from whey to tuna removes only 54 kcal per 100 g of protein and costs $1.10 more, which is $2.05 per 100 kcal. Tuna is a good food to eat, but the last step down in calories is the most expensive one on the board.
Is whey the best value if I am eating in a deficit?
On these two numbers, yes. At $0.312 per 10 g of protein and 5.0 kcal per gram of protein it is cheaper than chicken breast ($0.400 at 5.3), Greek yogurt ($0.350 at 5.9), tuna, turkey and tilapia, all of which it either matches or beats on leanness. It is the cheapest way in this table to get under 6 kcal per gram of protein. Note the serving basis: whey is priced per 30 g scoop, while everything else is per 100 g.
Should I stop buying peanut butter for protein?
Peanut butter is beaten by oats on both axes: oats are $0.131 cheaper per 10 g of protein and 0.5 kcal per gram of protein leaner. At 588 kcal and 50 g of fat per 100 g, it functions as a calorie source that happens to carry 25 g of protein. Keep it if you want the calories and the taste, but do not count on it to make your protein column add up cheaply.
Do the raw weights for meat and fish change the comparison?
Chicken, turkey, tilapia and ground beef are listed at raw weight, while canned tuna in water is already ready to eat. Cooking drives off water, so the 444 g of raw chicken that supplies 100 g of protein lands on the plate as noticeably less. The dollar per 10 g of protein figure is still correct for shopping, because it is anchored to what you buy at the counter, but do not compare 100 g of raw chicken directly to 100 g of cooked lentils as though they were the same portion.
Are these prices what I will pay at my store?
No. They are maintained, representative US grocery estimates joined to public nutrition data, not live, real-time or store-specific prices, so treat the absolute dollar figures as approximate and check them against your own shelf. The relative ranking is far more stable than the absolute level: a 20 percent swing will not move oats off the top at $0.089 or rescue ground beef from last at $0.550, though it can easily reshuffle turkey, tilapia and tuna, which sit within $0.052 of each other.