Are beans cheaper than meat?
Mostly. In USDA's 2017–18 national average prices, 30 g of protein cost $0.54 to $1.18 from beans and lentils and $1.03 to $1.50 from meat (chicken thighs $1.03, chicken breast $1.05, pork chops $1.15 and ground beef $1.50). The cheapest is split peas at $0.54, the most expensive chickpeas at $1.18.
Prices: USDA Economic Research Service national average prices for 2017–18, the latest set it has published, in dollars of that time, per edible gram (bones, skin you discard and cooking losses already counted). Protein and calories: USDA FNDDS. Today's shelf prices differ, so compare foods with each other rather than with your receipt.
US national average prices, 2017–18, per edible gram.
Price per pound, per serving and per gram of protein
| Food, as eaten | Cost of 30 g protein | Protein per $1 | Price per lb | One serving | Calories per 30 g protein |
|---|---|---|---|---|---|
| Split peas (cooked from dried, fat added) | $0.54 | 55 g | $0.64 | 1/2 cup (3.3 oz, 92.5 g): $0.13, 7 g protein | 650 |
| Lentils (cooked from dried, fat added) | $0.67 | 45 g | $0.85 | 1/2 cup (3.3 oz, 92.5 g): $0.17, 8 g protein | 594 |
| Kidney beans (canned, drained) | $0.91 | 33 g | $1.20 | 1/2 cup (3.2 oz, 90 g): $0.24, 8 g protein | 466 |
| Chicken thighs (roasted, skin not eaten) | $1.03 | 29 g | $3.83 | 3 oz (85 g): $0.72, 21 g protein | 217 |
| Chicken breast (roasted, skin not eaten) | $1.05 | 29 g | $4.81 | 3 oz (85 g): $0.90, 26 g protein | 160 |
| Black beans (canned, drained) | $1.06 | 28 g | $1.42 | 1/2 cup (3.2 oz, 90 g): $0.28, 8 g protein | 453 |
| Pinto beans (canned, drained) | $1.12 | 27 g | $1.29 | 1/2 cup (3.2 oz, 90 g): $0.26, 7 g protein | 537 |
| Pork chops (cooked, lean only) | $1.15 | 26 g | $4.87 | 3 oz (85 g): $0.91, 24 g protein | 183 |
| Chickpeas (canned, drained) | $1.18 | 26 g | $1.46 | 1/2 cup (3.2 oz, 90 g): $0.29, 7 g protein | 535 |
| Ground beef (cooked) | $1.50 | 20 g | $5.81 | 3 oz (85 g): $1.09, 22 g protein | 306 |
Prices are US national averages for 2017–18 in dollars of that time. Cost of 30 g protein = price per 3.5 oz (100 g) as eaten ÷ grams of protein per 3.5 oz (100 g) × 30.
What changes the answer
- Calories that come with the protein. Every 30 g of protein comes with 453 to 650 calories from beans and lentils and 160 to 306 from meat.
- Legumes you cook from dry. Lentils and split peas cooked from dried cost $0.54 to $0.67 per 30 g of protein, the canned beans here $0.91 to $1.18.
- Calories in cooked lentils and peas. USDA prices lentils and split peas cooked from dried only as a recipe with fat added, so the calories in this table include that fat. For comparison, lentils boiled without fat have 116 calories and 9 g of protein per 3.5 oz (100 g), or 386 calories per 30 g of protein instead of 594 (USDA SR Legacy, FDC ID 172421), while split peas boiled without fat have 118 calories and 8 g of protein per 3.5 oz (100 g), or 424 calories per 30 g of protein instead of 650 (USDA SR Legacy, FDC ID 172429).
- Edible weight, not shelf weight. Every price here is per gram of food as you eat it: a chicken thigh is priced for the meat without bone or skin, and dried lentils are priced as the cooked lentils. Foods that lose weight in cooking or carry bones are not made to look cheaper than they are.
- The year. These are 2017–18 prices. Store brands, sales and region move any single price, so a food that is close to another in this table can swap places at your store.
More on the cost of protein
Sources
- Prices: USDA Economic Research Service, Purchase to Plate National Average Prices for NHANES (PP-NAP), 2017/2018 prices, US dollars per 100 edible grams. https://www.ers.usda.gov/data-products/purchase-to-plate/ (dataset accessed 2026-10-12)
- Protein and calories: USDA FoodData Central, FoodData Central survey (FNDDS) 2024-10-31, the entry with the same food code (accessed 2026-10-14)
Foods on this page
- Black beans: ERS food code 41102080 Black beans, from canned, no added fat, price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2707363
- Chicken breast: ERS food code 24122131 Chicken breast, baked, broiled, or roasted, skin not eaten, from raw (Includes NS as to skin eaten), price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2705956
- Chicken thighs: ERS food code 24152231 Chicken thigh, baked, broiled, or roasted, skin not eaten, from raw, price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2706030
- Chickpeas: ERS food code 41302080 Chickpeas, from canned, no added fat (Includes garbanzos; ceci), matched directly to store sales data · nutrients FDC ID 2707418
- Ground beef: ERS food code 21500100 Ground beef, cooked, price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2705854
- Kidney beans: ERS food code 41106080 Kidney beans, from canned, no added fat (Includes red), price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2707383
- Lentils: ERS food code 41304990 Lentils, from dried, fat added (Includes NS as to fat; NS as to meat; frozen), priced from its recipe ingredients · nutrients FDC ID 2707424
- Pinto beans: ERS food code 41104080 Pinto beans, from canned, no added fat (Includes calico), matched directly to store sales data · nutrients FDC ID 2707375
- Pork chops: ERS food code 22101020 Pork chop, NS as to cooking method, lean only eaten, price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2705868
- Split peas: ERS food code 41303010 Split peas, from dried, fat added (Includes NS as to fat; NS as to meat; frozen), priced from its recipe ingredients · nutrients FDC ID 2707421
How we calculate: cost of 30 g protein = ERS price per 3.5 oz (100 g) as eaten ÷ FNDDS protein per 3.5 oz (100 g) × 30. Protein per $1 = protein per 3.5 oz (100 g) ÷ price per 3.5 oz (100 g). Serving weights come from USDA FNDDS or are plain weights (3 oz cooked meat or fish). Protein powder is left out on purpose: ERS gave every protein powder the same price, carried over from an instant breakfast mix, so a cost per gram for it would not be a real measurement. How we verify.