Skip to content

Protein on a Budget: Cheap High Protein Foods That Work

Cheap high protein foods compared by protein per serving and per 100 kcal, a sample day with about 106 g of protein, and how to hit your target for less.

By PixNutri Editorial Team · Published September 21, 2026 · Last updated September 21, 2026 · 9 min read

Protein on a Budget: Cheap High Protein Foods That Work
Photo: Jenna Hamra / Pexels

The cheapest high protein foods are usually the plain ones: dried or tinned lentils, beans and chickpeas, eggs, milk, tinned tuna and sardines, chicken thighs, cottage cheese, plain yogurt and tofu. Build most meals around two or three of them, add a protein food to every meal, and you can reach 100 g of protein a day without protein bars, shakes or premium cuts. Below you’ll find each food’s protein per serving, a simple way to compare cost on your own shelf, and a sample day with about 106 g of protein.

Not sure what your target is? Our guide to how much protein per day explains the ranges, and the protein calculator gives you a number in grams.

Why protein is where budgets break

Protein foods are usually the most expensive part of the shopping basket, and they’re where healthier choices cost the most extra. A meta-analysis of price studies from 10 countries found that, of all food groups compared, meats and other protein foods had the largest price difference between healthier and less healthy options. Grains, dairy and fats showed much smaller gaps.

That means the protein part of your plan is where a few smart swaps make the biggest difference. For general money-saving habits (meal planning, frozen vegetables, less food waste), see healthy eating on a budget. This article focuses on protein only.

Cheap high protein foods, compared

The numbers below come from USDA FoodData Central, the same data behind our calorie pages. Each food links to its full page with portions and macros.

FoodTypical servingProteinkcalProtein per 100 kcal
Lentils, cooked200 g18.0 g2327.8 g
Chickpeas, cooked1 cup (164 g)14.6 g2695.4 g
Kidney beans, cooked1 cup (177 g)15.4 g2256.9 g
Black beans, cooked1 cup (172 g)15.3 g2276.7 g
Eggs2 large (100 g)12.6 g1438.8 g
Skim milk1 cup (245 g)8.3 g8310.0 g
Canned tuna in water1 can (165 g drained)32.0 g14222.6 g
Sardines in oil1 can (92 g drained)22.6 g19111.8 g
Chicken thigh, roasted1 thigh (116 g meat)28.8 g20813.9 g
Cottage cheese (2% fat)200 g20.8 g16212.8 g
Greek yogurt, nonfat170 g17.3 g10017.3 g
Firm tofu150 g26.0 g21612.0 g
Peanut butter2 tbsp (32 g)7.1 g1913.7 g
Oats50 g dry6.6 g1903.5 g

Can sizes and drained weights vary by brand and country, so check the label on yours.

How to read this table

  • Protein per serving tells you how easy it is to reach 20 to 30 g in one meal.
  • Protein per 100 kcal tells you how “lean” the protein is. If you are in a calorie deficit, foods near the top of this column (tuna, Greek yogurt, chicken, cottage cheese, tofu) let you hit your protein target without using up many calories.
  • Peanut butter and oats are cheap and useful, but they bring a lot of calories per gram of protein. Treat them as helpers, not your main protein source.

Which foods are usually the cheapest?

Prices differ a lot between countries, shops and seasons, so we won’t quote numbers. As a general pattern in most supermarkets:

  • Usually the lowest cost per gram of protein: dried lentils, beans and chickpeas, eggs, milk, and own-brand oats. Dried pulses are often cheaper than tinned ones, but tins save time and still tend to be good value.
  • Usually low to moderate: tinned beans, tinned tuna and sardines, chicken thighs and legs, cottage cheese, plain yogurt (including own-brand Greek-style), tofu, frozen chicken or fish.
  • Usually more expensive per gram of protein: fresh fish fillets, steak and other premium cuts, ready-made protein snacks, protein bars and drinks.

Don’t take our word for it. Work it out on your own shelf with the method below.

Compare cost per 20 g of protein

Pack prices mislead. The fair comparison is how much you pay for the same amount of protein. You need two numbers: the price per kg on the shelf label, and the protein per 100 g on the nutrition label.

Grams of food for 20 g protein = 2,000 ÷ protein per 100 g

Cost of 20 g protein = price per kg × grams of food ÷ 1,000

For the foods above, 20 g of protein takes roughly:

FoodAmount for 20 g protein
Canned tuna in waterabout 103 g drained
Chicken thigh, roastedabout 80 g cooked meat
Firm tofuabout 115 g
Cottage cheeseabout 190 g
Greek yogurt, nonfatabout 195 g
Eggsabout 160 g (3 large eggs)
Lentils, cookedabout 220 g
Skim milkabout 590 g (2.4 cups)

One detail with dried pulses: the label shows the protein of the dry product, which is much higher per 100 g than cooked. Use the dry numbers with the dry price. As a rough guide, dry lentils about triple in weight when cooked, so 200 g dry gives about 600 g cooked, or about 54 g of protein.

Example with made-up numbers: if tofu costs 8.00 per kg, 115 g costs 8.00 × 115 ÷ 1,000 = 0.92 for 20 g of protein. If chicken thighs cost 7.00 per kg of cooked meat, 80 g costs 0.56. (Example prices, not real ones. Remember that raw meat loses weight when cooked, and bone-in pieces include bone you don’t eat.)

A sample day with about 106 g of protein

This day is built only from the low-cost foods above. It suits someone aiming for roughly 100 g, for example a 70 kg adult eating about 1.4 to 1.5 g per kg while losing weight.

MealWhat’s in itProteinkcal
Breakfast50 g oats cooked in 250 g skim milk, 2 boiled eggs27.7 g418
Lunch1 can tuna in water (165 g) with salad, 1 slice whole wheat bread36.0 g223
DinnerLentil and bean chilli: 200 g cooked lentils, 100 g kidney beans26.7 g359
Snack150 g cottage cheese with fruit15.6 g122
Total106.0 g1,122

The calories cover only the listed foods. Add your vegetables, fruit, cooking oil, sauces and any side of rice or potatoes to get the full day. That leaves plenty of room to adjust to your calorie target.

Each main meal lands at or above 25 g of protein. A review on protein and weight loss (Leidy and colleagues, 2015) suggested about 25 to 30 g per meal as a practical way to get the benefits of a higher-protein diet on appetite and body composition. If you want more ideas for the first meal of the day, see our high protein breakfast ideas.

Cheaper swaps for the same day: use black beans or chickpeas instead of kidney beans, sardines instead of tuna, and plain yogurt instead of cottage cheese. The protein changes a little, but the structure stays the same.

How to hit your protein target on a budget

  1. Know your number. Most healthy adults need at least 0.8 g per kg per day (EFSA sets 0.83 g/kg for adults). Many active people and dieters aim higher. Use the protein calculator to get yours.
  2. Anchor each meal with one cheap protein. Eggs or yogurt in the morning, a tin of fish or beans at lunch, pulses, tofu or chicken thighs in the evening.
  3. Mix plant and animal protein. Half-lentil, half-meat sauces and chillies stretch the meat and add fibre. Harvard’s Nutrition Source notes that swapping red and processed meat for beans, soy, nuts, fish or poultry is linked with lower risk of several diseases.
  4. Buy the “boring” versions. Plain yogurt rather than flavoured desserts, own-brand tins, whole chicken legs rather than trimmed fillets, dried pulses when you have time to cook.
  5. Use the freezer. Frozen chicken, fish fillets and tofu keep for weeks, so you can buy on offer without wasting food.
  6. Cook pulses in batches. One pot of lentils or beans covers several lunches and dinners. See meal prep for beginners for storage tips.
  7. Skip specialised protein products unless they fit. Protein-labelled snacks are often the most expensive way to buy protein. Protein powder can be reasonable value in some shops, but compare it with the cost-per-20 g method before assuming it’s cheaper than food.

Safety notes

  • Kidney disease: if you have kidney disease or have been told to limit protein, talk to your doctor or dietitian before raising your intake.
  • Tuna: the NHS advises that if you are pregnant or trying for a baby, you should have no more than 4 medium cans of tuna a week, because tuna contains more mercury than other fish. Sardines count as oily fish; tuna does not.
  • Red and processed meat: the NHS recommends that people who eat more than 90 g of red or processed meat a day cut down to 70 g. Cheap processed meats like sausages and ham are not a good way to raise protein.
  • Salt: tinned beans and fish can contain added salt. Rinse beans and choose “no added salt” where you can. Our guide on how to read nutrition labels shows what to check.

Tracking protein without paying more

Once you have a few budget meals you like, log them once and reuse them. In PixNutri you can snap a photo of your meal for an AI estimate of calories and macros, scan barcodes on tins and yogurts, and correct the numbers with your own portions. The free plan includes 2 photo scans a day, with extra scans available by watching a short video.

FAQ

What is the cheapest high protein food?

In most shops, dried lentils, beans and chickpeas give the most protein for the money, followed closely by eggs and milk. Tinned fish, chicken thighs, cottage cheese and tofu are often good value too. Check the price per kg on your own shelf.

Can I get enough protein on a budget without meat?

Yes. Lentils, beans, chickpeas, tofu, eggs, milk, yogurt and cottage cheese can cover a high protein target. Pulses bring more calories per gram of protein than tofu or dairy, so combine them if you are also watching calories.

Is protein powder cheaper than food?

Sometimes, per gram of protein, but not always, and prices vary widely. Work it out with the cost per 20 g method. Food also gives you fibre, vitamins and minerals that powder doesn’t.

How do I get 100 g of protein a day cheaply?

Aim for about 25 to 30 g at each of three meals plus a protein snack. The sample day above does this with oats, milk, eggs, tinned tuna, lentils, beans and cottage cheese.

Keep reading

Support

Have questions? Reach out to us at ​

We're here to help you get the most out of PixNutri.