Key points from the chart
- The cheapest protein sources per gram on the chart are dried legumes: pinto beans, split peas, lentils and chickpeas all cost about $0.50 or less for 30 g of protein.
- Whole eggs (about $0.60) and wheat spaghetti (about $0.52) are the cheapest non-legume foods on the chart.
- Soybean is the most protein dense food shown, at about 33 g of protein per 100 g, and still costs only about $1.06 per 30 g of protein.
- Ribeye steak ($5.76) and pork belly ($4.77) are so expensive per gram of protein that they run off the top of the chart.
- Vegetables such as spinach, broccoli and Brussels sprouts are low in protein (about 2 to 3 g per 100 g), so their protein is expensive, at $3 to $4 per 30 g.
Cheapest protein sources per gram in text
Title: Food’s Cost per Gram of Protein vs. Protein Density (Adjusted for Digestibility). It is a scatter chart. Across the bottom is grams of protein per 100 grams of food (0 to 35). Up the side is cost in US dollars per 30 grams of protein ($0 to $4.00). Each dot is a food, coloured by group: Meats, Milks, Seafoods, Eggs, Legumes, Seeds, Nuts, Vegetables and Grains. Cheap, protein dense foods sit bottom right and expensive, low protein foods top left. Two meats are shown as arrows above the chart with their values printed: pork belly (9.0, 4.77) and ribeye steak (18.3, 5.76).
Notes printed on the chart: protein density may change significantly after cooking; pricing based on cheapest standard pack closest to 2 pounds. Sources: Walmart.com (NC), USDA FoodData Central, FAO.
Only the two arrows have printed values. The other figures below are our readings of the dot positions and are approximate, to within about 5 cents and half a gram. The list is sorted from cheapest to most expensive protein. To get the cost per single gram, divide the last column by 30.
| Food | Group | Protein per 100 g (g) | Cost per 30 g of protein (USD) |
|---|---|---|---|
| Pinto bean | Legumes | 20 | 0.34 |
| Split pea | Legumes | 20 | 0.43 |
| Lentil | Legumes | 20 | 0.45 |
| Chickpea | Legumes | 18 | 0.50 |
| Wheat spaghetti | Grains | 12.5 | 0.52 |
| Whole egg | Eggs | 12.5 | 0.60 |
| Peanut | Legumes | 25 | 0.62 |
| Cow’s milk | Milks | 3 | 0.75 |
| Brown rice | Grains | 6 | 0.86 |
| Whole wheat bread | Grains | 10.5 | 0.99 |
| Soybean | Legumes | 33 | 1.06 |
| Soy milk | Milks | 3.5 | 1.13 |
| Chicken breast | Meats | 21.5 | 1.42 |
| Chicken wing | Meats | 17 | 1.43 |
| Quinoa | Grains | 13 | 1.46 |
| Almond | Nuts | 19 | 1.48 |
| Oat | Grains | 11 | 1.53 |
| Tilapia | Seafoods | 19.5 | 1.60 |
| Egg white | Eggs | 11 | 1.63 |
| Canned tuna | Seafoods | 14.5 | 1.74 |
| Sweet pea | Legumes | 5 | 1.82 |
| 80% ground beef | Meats | 17 | 1.88 |
| Pork chop | Meats | 20 | 1.99 |
| Turkey | Meats | 18.5 | 2.12 |
| Russet potato | Vegetables | 2 | 2.28 |
| Cashew | Nuts | 15.5 | 2.28 |
| Flaxseed | Seeds | 14.5 | 2.29 |
| Pollock | Seafoods | 12 | 2.31 |
| Pistachio | Nuts | 17.5 | 2.54 |
| Chia seed | Seeds | 13 | 2.69 |
| Salmon | Seafoods | 20 | 2.91 |
| Walnut | Nuts | 13 | 3.03 |
| Broccoli | Vegetables | 2.5 | 3.07 |
| Hemp seed | Seeds | 25 | 3.14 |
| Shrimp | Seafoods | 18 | 3.25 |
| Corn on the cob | Vegetables | 3 | 3.60 |
| Rye bread | Grains | 7.5 | 3.61 |
| Spinach | Vegetables | 2.5 | 3.75 |
| Brussels sprout | Vegetables | 3 | 3.93 |
| Pork belly | Meats | 9.0 (printed) | 4.77 (printed) |
| Ribeye steak | Meats | 18.3 (printed) | 5.76 (printed) |
How the chart was made
The chart was posted to Reddit’s r/dataisbeautiful by u/James_Fortis, who listed the sources as Walmart for pricing (North Carolina region), USDA FoodData Central for protein density and FAO/WHO for digestibility, with Microsoft Excel as the tool [1]. The creator said this version updated an earlier one after feedback: it was adjusted for digestibility, a few foods were added and two dots were changed to arrows [1].
Adjusting for digestibility means the cost reflects protein the body can use rather than all the protein listed on a label. The FAO explains that the Protein Digestibility Corrected Amino Acid Score (PDCAAS) has been used widely since 1989 to evaluate protein quality, and that a 2011 FAO expert consultation reviewed its limitations and set out a newer method, the Digestible Indispensable Amino Acid Score (DIAAS) [3]. In a reply on Reddit, the creator said the digestibility figures in the sources they checked were within about 2 to 3% of each other [1].
Protein in food, from MedlinePlus
MedlinePlus, from the US National Library of Medicine, says protein is found in animal sources such as meats, milk, fish and eggs, and in plant sources such as soy, beans, legumes, nut butters and some grains, and that you do not need to eat animal products to get all the protein you need [2]. It lists pinto beans, black beans, kidney beans, lentils, split peas and garbanzo beans (chickpeas) among good sources of protein [2], the same foods that sit cheapest on this chart.
MedlinePlus gives the daily recommended protein intake for healthy adults as 10% to 35% of total calorie needs, and notes that nuts are high in fat [2]. The chart compares price only. It says nothing about fat, fibre or other nutrients, and it is not a guide to what anyone should eat.
Notes on this infographic
- Prices are Walmart prices for North Carolina at the time the chart was made (it was posted in 2024). They will differ by shop, region and date, so treat the ranking as a snapshot.
- Protein values are for foods as bought. The chart itself warns that protein density can change significantly after cooking, for example when dried beans or grains absorb water.
- The title says cost per gram of protein, but the axis shows cost per 30 grams of protein.
- Peanut is grouped with the legumes, which is botanically correct even though it is often thought of as a nut.
Questions about the cheapest protein sources
What is the cheapest source of protein per gram?
On this chart it is pinto beans, at about $0.34 for 30 g of protein, or a little over 1 cent per gram. Split peas, lentils and chickpeas are close behind. These are Walmart prices in North Carolina, so the order may differ elsewhere [1].
Are eggs a cheap protein source?
On this chart, yes. Whole eggs cost about $0.60 per 30 g of protein, the cheapest of any animal food shown and cheaper than chicken breast (about $1.42). Egg whites bought on their own cost much more, about $1.63.
How much is a gram of protein?
It depends on the food. On this chart the cost of 30 g of protein ranges from about $0.34 for pinto beans to $5.76 for ribeye steak, roughly 1 cent to 19 cents per gram. In terms of energy, MedlinePlus says one gram of protein supplies 4 calories [2].
Sources
- u/James_Fortis, [OC] Food’s Cost per Gram of Protein vs. Protein Density (Adjusted for Digestibility), r/dataisbeautiful, including the creator’s source list and replies.
- MedlinePlus, US National Library of Medicine, Protein in diet.
- FAO, Dietary protein quality evaluation in human nutrition, FAO Food and Nutrition Paper 92 (2013).
Last reviewed 29 October 2026


