MacroThriftMacroThrift

Compare

Plant vs animal protein: which is actually cheaper per gram?

Every plant source in our dataset beats every meat and fish on cost per gram of protein, but dairy breaks the pattern. The real split is staples versus muscle meat.

Per gram of protein, the plant sources in this dataset run from $0.089 (oats, dry) to $0.333 (edamame). The meat and fish run from $0.400 (chicken breast, raw) to $0.550 (90/10 ground beef, raw). Those two bands do not overlap anywhere. On price alone that is the whole answer: not one cut of meat or fish here reaches even the most expensive plant source.

The clean story breaks the moment dairy enters. Lowfat cottage cheese costs $0.273 per 10 g of protein, which undercuts edamame ($0.333) by about 18%, and whey protein at $0.312 undercuts it too. Five of the ten animal sources land below chicken, the cheapest meat. So the real dividing line is not plant against animal. It is bulk staple against animal muscle.

This page compares price and macros, nothing else. The dataset carries grams, calories and dollars. It does not carry protein quality, amino acid profiles, digestibility, health outcomes or environmental cost, so nothing below claims anything about any of them. Prices are maintained, representative US grocery estimates joined to public nutrition data. They are not live, real time or store specific. Check them against your own receipt: the ranking travels well, the exact dollars do not.

Plant sources

Food$/10 g proteinkcal per gprotein
Oats (dry)$0.08923.016.9 g
Peanut butter$0.22023.525 g
Lentils (cooked)$0.22212.99 g
Tofu (firm)$0.2358.517 g
Black beans (cooked)$0.24714.88.9 g
Edamame$0.33310.112 g
Average $0.224 per 10 g of protein across 6 foods.

Animal sources

Food$/10 g proteinkcal per gprotein
Soybeans (dried, raw)$0.09612.236.5 g
Wheat flour (all-purpose)$0.11735.310.3 g
Vital wheat gluten$0.1334.975.2 g
Peanuts (raw)$0.17221.826.2 g
Split peas (cooked)$0.21714.08.3 g
Cottage cheese (lowfat)$0.2737.611 g
Whey protein (1 scoop)$0.3135.024 g
Greek yogurt (nonfat)$0.3505.910 g
Milk (2%)$0.35314.73.4 g
Eggs (~2 large)$0.35711.312.6 g
Chicken breast (raw)$0.4005.322.5 g
Canned tuna (in water)$0.4234.526 g
Turkey breast (raw)$0.4384.624 g
Egg whites (liquid)$0.4594.810.9 g
Tilapia (raw)$0.4754.820 g
Sardines (canned in oil)$0.5498.524.6 g
Ground beef 90/10 (raw)$0.5508.820 g
Quinoa (cooked)$0.68227.34.4 g
Beef jerky$1.65712.433.2 g
Average $0.422 per 10 g of protein across 19 foods.

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.

The headline: no meat or fish beats any plant source here

Ranked by dollars per 10 g of protein, the five cheapest foods in the table are all plants: oats $0.089, peanut butter $0.220, cooked lentils $0.222, firm tofu $0.235, cooked black beans $0.247. The five most expensive are all animal muscle: chicken $0.400, canned tuna $0.423, turkey $0.438, tilapia $0.475, 90/10 ground beef $0.550.

Scaled to 100 g of protein, that is $8.90 from oats against $55.00 from ground beef, a factor of 6.2. Even the tightest crossing of the divide, edamame at $0.333 against chicken at $0.400, has the chicken costing about 20% more.

The size of the gaps matters more than their direction. Oats to peanut butter, the next cheapest source, is a 2.47 times jump on its own. Then the whole middle of the table compresses: ten foods, from peanut butter at $0.220 up through eggs at $0.357, fit inside a band only 1.62 times wide. If you are looking for one decision that moves the number, it is whether oats do any of your protein work, not which of those ten you pick.

Dairy breaks the clean story

Cottage cheese sits sixth of sixteen at $0.273 per 10 g of protein, cheaper than edamame. Whey is seventh at $0.312, also cheaper than edamame. Greek yogurt ($0.350), 2% milk ($0.353) and eggs ($0.357) are more expensive than every plant source in the table but still cheaper than every meat and fish.

A better frame than plant versus animal: things sold as bulk or processed commodities are cheap per gram of protein, and whole animal muscle is expensive. Oats, lentils, beans, tofu, cottage cheese and whey powder all live on the cheap side of that line. Chicken, tuna, turkey, tilapia and beef all live on the expensive side.

Whey makes the point sharply. At $0.312 per 10 g of protein and 5.0 kcal per gram of protein, it beats chicken ($0.400, 5.3 kcal per gram of protein) on both axes at once: 22% cheaper and marginally leaner per gram of protein. Note the basis, though. Whey is priced here as a 30 g scoop ($0.75, 24 g protein, 120 kcal), not per 100 g like everything else in the table.

What cheap plant protein costs you in calories

Pick a round number to compare against, say 50 g of protein from a single source, and the tradeoff becomes obvious.

Oats: 296 g dry (2.96 servings of 100 g), $0.44, 1,151 kcal, 195 g carbs. Peanut butter: 200 g, $1.10, 1,176 kcal, and 100 g of fat. Cooked lentils: 556 g, $1.11, 645 kcal, 111 g carbs. Cooked black beans: 562 g, $1.24, 742 kcal, 135 g carbs. Chicken breast: 222 g raw, $2.00, 267 kcal.

So oats deliver that 50 g for $1.56 less than chicken, but they bring 884 extra calories to do it. If your calorie budget is loose, that is free money. If it is tight, the saving is not really available to you: you cannot bank $1.56 you have to spend 1,151 calories to collect.

Volume is a second, quieter constraint. Fifty grams of protein is 556 g of cooked lentils or 562 g of cooked black beans. That is five and a half servings, which is a lot of bowl to get through in a day, and it is why staples usually work best as a partial replacement rather than the whole protein plan.

Tofu is the plant outlier, and the frontier is half animal

Tofu costs $0.235 per 10 g of protein and carries 8.5 kcal per gram of protein. That is leaner per gram of protein than eggs (11.3), than edamame (10.1), than lentils (12.9), and even than 90/10 ground beef (8.8), while costing about 57% less than the beef.

Run the whole table for dominance, meaning a food that is beaten on price and on calories per gram of protein simultaneously, and only six of the sixteen survive: oats ($0.089, 23.0 kcal per g protein), 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). Three plant, three animal.

Everything else is beaten on both counts by something on that list. Peanut butter ($0.220, 23.5) loses to oats. Black beans ($0.247, 14.8) lose to lentils. Edamame and eggs lose to tofu. Greek yogurt ($0.350, 5.9) and chicken lose to whey. Turkey ($0.438, 4.6) and tilapia ($0.475, 4.8) lose to tuna. Ground beef loses to both tofu and cottage cheese.

That is the strongest version of the finding: the honest split in this data is not plant against animal, because the efficient options are evenly divided between them.

The price of leanness, step by step

Walk up the six survivors in price order and you can price exactly what each step buys. Per 100 g of protein: oats $8.90 and 2,300 kcal, lentils $22.20 and 1,290 kcal, tofu $23.50 and 850 kcal, cottage cheese $27.30 and 760 kcal, whey $31.20 and 500 kcal, tuna $42.30 and 450 kcal.

Oats to lentils costs $13.30 more and removes 1,010 kcal, so $1.32 per 100 kcal removed. Lentils to tofu costs $1.30 more and removes 440 kcal, or $0.30 per 100 kcal. Tofu to cottage cheese costs $3.80 more and removes only 90 kcal, or $4.22 per 100 kcal. Cottage cheese to whey costs $3.90 and removes 260 kcal, or $1.50 per 100 kcal. Whey to tuna costs $11.10 and removes 50 kcal, or $22.20 per 100 kcal.

The decision rule falls out on its own. Lentils to tofu is the best buy in the entire table, roughly fourteen times better value per calorie removed than the tofu to cottage cheese step, and about seventy times better than whey to tuna. If you are moving toward leaner protein and want the move to be cheap, tofu is where the curve bends.

Three traps: per serving price, cooked weight, and the scoop

First trap: the shelf price. Milk is the cheapest line in the table per serving at $0.12 per 100 g, and it ranks eleventh of sixteen per gram of protein, because 100 g of milk carries only 3.4 g of protein. Fifty grams of protein from milk means 1,471 g of milk, about a litre and a half, for $1.76 and 735 kcal. Cheap per unit is not cheap per gram of protein.

Second trap: mixed weight bases. Lentils and black beans are listed cooked, meat and fish are listed raw. Dollars per gram of protein normalises that, so the ranking holds, but portion planning does not normalise. Raw meat prices are anchored to the weight you buy and pay for. If you plan portions off cooked weight instead, a 100 g cooked chicken portion started as more than 100 g raw and cost more than the $0.90 line suggests. This dataset does not carry cooking yields, so do not assume one: weigh it yourself if the number matters to you.

Third trap: the scoop. Whey is the only entry not on a 100 g basis. It is 30 g, $0.75, 24 g of protein. Two scoops give 48 g of protein for $1.50 and 240 kcal. Compare like for like before concluding anything about it.

How to change the cart

Replace your most expensive line first. Shifting 100 g of daily protein from ground beef ($0.550) to lentils ($0.222) saves $3.28 a day, or $22.96 a week. Nothing else in the table produces a swing that size.

Do not shop the small spreads. The entire meat and fish block spans $0.400 to $0.550, a range of $0.150 per 10 g of protein. Even the best possible swap inside that block, beef to chicken, is worth $1.50 per 100 g of protein per day. One staple substitution beats every reshuffle among the animal options.

Mix rather than commit. Taking 25 g of protein from oats and 25 g from tofu costs $0.81 and carries 788 kcal, against $2.00 and 267 kcal for the same 50 g from chicken alone. You save $1.19 and pay 521 calories for it. Whether that is a good trade depends only on which of the two, money or calories, is the binding constraint on the target you have already set for yourself.

Finally, re-check the prices. These are representative estimates, not live store data, and your local prices will differ in absolute terms. What holds up well is the ordering: bulk staples below dairy, dairy below muscle meat, and tofu sitting at the point where cost and calorie density are both low at the same time.

This page compares cost and macros only. It does not score protein quality, amino acid profile, micronutrients, environmental impact or anything else the dataset does not measure. To split a target across both columns under a calorie cap, use the cheapest-protein planner.

FAQ

Is plant protein always cheaper than animal protein?
In this dataset, every plant source is cheaper per gram of protein than every meat and fish, ranging from $0.089 (oats) to $0.333 (edamame) against $0.400 (chicken) to $0.550 (ground beef). But it is not true against animal protein in general, because cottage cheese at $0.273 and whey at $0.312 both beat edamame. The reliable pattern is that bulk staples and commodity dairy are cheap, and whole animal muscle is expensive.
What is the cheapest protein source in this table?
Dry oats, at $0.089 per 10 g of protein, which is $8.90 per 100 g of protein. The next cheapest, peanut butter at $0.220, costs 2.47 times as much per gram of protein. The catch is calorie density: oats carry 23.0 kcal per gram of protein, so 50 g of protein from oats means 296 g of dry oats, 1,151 kcal and 195 g of carbohydrate.
Is tofu cheaper than chicken breast?
Yes. Tofu costs $0.235 per 10 g of protein against $0.400 for raw chicken breast, so tofu is about 41% cheaper per gram of protein. The tradeoff is calories: tofu carries 8.5 kcal per gram of protein versus 5.3 for chicken, so 50 g of protein from tofu is 425 kcal against 267 kcal from chicken. Tofu is still the leanest plant source in the table per gram of protein.
Do these prices match what I will pay at my store?
Not exactly. These are maintained, representative US grocery estimates joined to public nutrition data, not live, real time or store specific prices. Absolute dollars will differ by region, store and week, so sanity check the few items you actually buy against your own receipt. The relative ranking is far more stable than the absolute price, so the ordering is what you should plan around.
Does this comparison say plant protein is as good as animal protein?
No, and it cannot. This dataset contains grams, calories and dollars only. It does not measure protein quality, amino acid composition, digestibility, health outcomes or environmental impact, so no claim about any of those is made or supported here. Treat it purely as a cost and shopping resource for a protein target you have already chosen for yourself.
Why does the raw versus cooked distinction matter for the meat prices?
Chicken, turkey, tilapia and beef are listed at raw weight, while lentils and black beans are listed cooked. The dollars per gram of protein figure normalises that, so the ranking is still a fair comparison. Portion planning does not normalise: if you measure servings from cooked weight, a 100 g cooked chicken portion started as more than 100 g raw and therefore cost more than the $0.90 raw line implies. This dataset does not include cooking yields, so weigh it yourself rather than assuming a percentage.