Most “budget protein” guides in India compare foods by rupees per kilogram. That number tells you what the shop is charging. It does not tell you what you are getting. Paneer at ₹400/kg and chana dal at ₹90/kg look like a 4× gap on the shelf. On a per-gram-of-protein basis, which is what you actually care about, the gap is 5×. The numbers the shopkeeper quotes and the numbers that matter for your plate are not the same unit.
This pillar ranks Indian protein foods by rupees per gram of actual protein, with April 2026 Bengaluru kirana prices, IFCT 2017 protein values, and the derivation formula spelled out so you can run it on whatever your shop is charging this month. It is the companion to the food-first pillar that ranks by protein per realistic serving; this one ranks the same foods by unit economics.
The one formula that matters
The arithmetic has to be right for the rest of the pillar to be worth reading, so let me put it here in full.
₹ per gram of protein = (₹ per kg of food) ÷ (grams of protein per kg of food)
grams of protein per kg of food = (g protein per 100g) × 10
Worked example. Chana dal costs ₹90/kg at a mid-tier Bengaluru kirana in April 2026. IFCT 2017 (item code B001) puts chana dal at 21.55g of protein per 100g dry. So:
- g-protein-per-kg = 21.55 × 10 = 215.5 g/kg
- ₹/g-of-protein = ₹90 ÷ 215.5 = ₹0.42/g
That is the real unit. Every row in the table below derives from this formula.
Sanity check I use before publishing any ₹/g number. A whole-food single-source day of 70g of protein should cost under ₹50 at kirana prices. Chana dal at ₹0.42/g × 70g = ₹29.40. Horse gram at ₹0.46/g × 70g = ₹32.20. Those are in range. If a calculation tells me a whole-food 70g day costs more than ₹100, I’ve made a unit error — usually dividing by the per-100g protein number instead of multiplying by 10 first, which yields ₹ per 10g of protein silently mislabeled as ₹/g. A version of that mistake slipped into an earlier published draft of this cluster’s companion pillar and required a same-day correction. The sanity check catches it before publish now.
The working table, ranked by ₹ per gram of protein
April 2026, Bengaluru mid-tier kiranas. Regional variation runs ±15-20% on loose goods and ±5-10% on branded packs.
| Food | IFCT / USDA ref | ₹/kg | Protein g/100g | ₹ per g of protein |
|---|---|---|---|---|
| Chana dal (split bengal gram) | IFCT B001 | 90 | 21.55 | ₹0.43 |
| Wheat atta (whole, carrier grain) | IFCT A019 | 45 | 10.57 | ₹0.43 |
| Horse gram (kulthi) | IFCT B012 | 100 | 21.73 | ₹0.46 |
| Soy chunks (defatted, dry) | derived from B025 | 250 | 52 | ₹0.48 |
| Bajra (pearl millet) | IFCT A003 | 55 | 10.96 | ₹0.50 |
| Masoor dal (red lentil, split) | IFCT B013 | 130 | 24.35 | ₹0.53 |
| Jowar (sorghum) | IFCT A005 | 55 | 9.97 | ₹0.55 |
| Moong whole (green gram) | IFCT B011 | 130 | 22.53 | ₹0.58 |
| Peanut (ground nut) | IFCT H012 | 140 | 23.65 | ₹0.59 |
| Moong dal (split, dehusked) | IFCT B010 | 140 | 23.88 | ₹0.59 |
| Kala chana (whole) | IFCT B002 | 110 | 18.77 | ₹0.59 |
| Rice, parboiled (carrier grain) | IFCT A014 | 50 | 7.81 | ₹0.64 |
| Cowpea (lobia) | IFCT B005 | 140 | 20.36 | ₹0.69 |
| Toor / arhar dal | IFCT B021 | 160 | 21.70 | ₹0.74 |
| Urad dal (split) | IFCT B003 | 170 | 23.06 | ₹0.74 |
| Rajma (red kidney bean) | IFCT B020 | 180 | 19.91 | ₹0.90 |
| Sattu (loose, roasted bengal gram flour) | derived from B002 roasted | 200 | 21 | ₹0.95 |
| Ragi (finger millet) | IFCT A010 | 70 | 7.16 | ₹0.98 |
| Egg (whole, ₹7 each at ₹210/tray-of-30) | IFCT M001 | — | 13.28 (6.6g/egg) | ₹1.05 |
| Sattu (packaged) | derived from B002 roasted | 400 | 21 | ₹1.90 |
| Tofu (firm) | USDA FDC #172475 | 350 | 17.0 | ₹2.06 |
| Paneer (full-fat) | IFCT L003 | 400 | 18.86 | ₹2.12 |
| Curd (full-fat dahi) | USDA FDC #171287 | 70 | 3.10 | ₹2.26 |
| Whey protein (Indian mid-tier, 77% protein) | brand-dependent | 2,500 | 77 | ₹3.25 |
| Almond | IFCT H001 | 800 | 18.41 | ₹4.35 |
Five reads from that table before moving on.
- The whole-food floor sits around ₹0.40 to ₹0.50 per gram of protein. Chana dal and wheat atta tie at ₹0.43, horse gram is ₹0.46, soy chunks ₹0.48, and bajra ₹0.50 — all within ₹0.07 of each other. Below that line is physically possible only with adulteration or mispriced freight, neither of which belong in a household plan.
- Dairy and tofu are a four-to-five-times premium over pulses per gram of protein. Paneer, tofu, and curd sit at ₹2.00 to ₹2.30 per gram. They are not cheap per gram. They earn their place by fitting into meals without needing explanation — your grandmother is not learning what tofu is at 7pm on a Tuesday.
- Ragi is the surprise of the list. At ₹0.98/g it is the most expensive “cheap” food here, because its protein density is only 7.16g per 100g. Ragi belongs in an Indian kitchen for calcium, fiber, and texture. It does not belong at the top of a protein-per-rupee ranking. The millet comparison makes the same point with a head-to-head.
- Whey is the most expensive source per gram of actual protein on the list. At ₹3.25/g it costs more than paneer per gram, and about 8× chana dal. The “24g per scoop for ₹80” framing looks competitive until you do the per-g math. Whey has real uses — convenience, digestion, post-workout timing — but it is the wrong tool for “cheapest protein.” The full comparison is here: Whey vs Indian Food Protein: Where Each Fits.
- Carrier grains quietly compete on the ranking but cannot do the work. Wheat atta at ₹0.43/g is almost the cheapest on the list. But one roti is 5g of protein, so hitting 70g/day on wheat alone means 14 rotis and roughly 1,400 kcal of wheat. The per-g number is real; the throughput is the limit. Think of carrier grains as a rebate, not a source.
Where dals and pulses earn their spot
Nine of the top fifteen rows in the table are dals or whole pulses. That is not a coincidence. It is why dal-rice has survived as a staple through every food fad of the last fifty years: per gram of protein, nothing beats it at household scale.
A few practical notes the table does not capture.
Chana dal is the single cheapest pulse per gram of protein in the list. It is also slightly heavier on the stomach than moong and cooks longer than masoor. It belongs in the rotation, not necessarily at the top of it. A household that runs chana twice, moong twice, and masoor or toor once per week captures 80% of the ₹/g savings without texture fatigue.
Horse gram (kulthi) at ₹0.46/g is one of the best per-rupee foods on the list and among the most underused outside Karnataka, Tamil Nadu, and Andhra. Its hidden cost is cooking: 40 to 60 minutes of pressure cooking even after an overnight soak. If the plan requires horse gram on a Wednesday night and you don’t get home until 8pm, it won’t happen. Budget horse gram to the weekend batch-cook.
Rajma at ₹0.90/g and kabuli chana in the same range are the most expensive whole pulses per gram. They also deliver the most protein per serving because the dry-to-plate portion runs larger — nobody eats 30g dry rajma. On a per-serving budget (what the dal-protein comparison covers) rajma competes fine. On a per-gram budget, chana dal is the better spend.
Urad dal at ₹0.74/g shows up in the list because it is the backbone of idli, dosa, and dal makhani — meals you are already making. The urad dal nutrition breakdown goes into why the protein figure on the pack is dry weight and what it becomes after soaking and fermentation.
Where dairy fits — and where it does not
Paneer at ₹2.12/g and curd at ₹2.26/g are five times more expensive per gram of protein than chana dal. If your frame for the household budget is “cheapest protein,” the answer is not paneer. It never has been.
The better frame is “what’s the lowest-friction protein anchor that doesn’t need cooking education?” On that axis, paneer wins on most weeknights. A 50g paneer cube in sabzi delivers ~9.5g of protein in four minutes of kitchen work. The per-gram cost is a premium; the activation cost is almost zero.
Curd is a special case. At ₹0.07 per gram of food it looks dirt cheap, but its protein density is only 3.1g/100g — a full katori delivers about 4.5g of protein. Curd works less as a standalone protein source and more as a protein multiplier: added to dal, rice, a paratha, or a chaat, it pushes a 12g meal to a 17g meal with no extra preparation. The per-g-of-protein figure is honest, but the meal math is better than the number suggests.
Tofu at ₹2.06/g trades almost perfectly with paneer on price and runs roughly a third the saturated fat. Whether it sticks in your kitchen is a texture question, not a cost question. The paneer vs tofu comparison breaks down which meals each anchor handles well.
Where whey and convenience sit
Whey is the most expensive protein-per-rupee item on this list. At ₹3.25 per gram of actual protein — measured against the 77% protein content of a mid-tier Indian tub, not per scoop — it is more expensive than paneer on a per-gram basis.
That is not an argument against whey. It is an argument against using whey as a cost-reduction lever. Whey earns its price on three specific axes: protein density per serving (24-27g in a drink), minimal digestion load around training, and zero cooking friction. All three matter for a specific reader, specifically post-workout or commute-window. None of them is “cheapest.”
Convenience meals — ready-to-eat protein bowls, high-protein dosa batters, fortified atta blends — live in the ₹1.50 to ₹3.00 per gram of protein band when well-formulated. They are not a budget solution and they are not trying to be. Their value is preventing a skipped meal or a carb-only default, which on a 70g/day target matters a lot. The bridge article to read on this is comparing convenient protein options.
Three worked weekly protein budgets
For a 70kg adult targeting 70g of protein per day (the cereal-dominant adjustment per ICMR-NIN RDA 2020), that is 490g of protein per week. Same target, three different unit economics.
Budget A: ₹300/week (~₹43/day) — pulse-forward
A plate dominated by chana dal, horse gram, moong dal, and carrier grains, with curd for texture and six eggs a week for lacto-ovo readers.
- 5 × 50g chana dal portions = 250g dry × ₹90/kg = ₹22.50 → 54g protein
- 3 × 40g horse gram portions = 120g dry × ₹100/kg = ₹12 → 26g protein
- 4 × 30g moong dal portions = 120g dry × ₹140/kg = ₹16.80 → 29g protein
- 4 × 30g sattu drinks (loose kirana sattu) = 120g × ₹200/kg = ₹24 → 25g protein
- 400g curd = ₹28 → 12g protein
- 6 eggs (lacto-ovo only) = ₹42 → 40g protein
- Carrier grains (atta 2kg + rice 1kg) = ~₹140 → ~90g protein across the week
Weekly total: ~276g protein from dedicated protein spend + ~90g from carrier grains = ~366g. Short of the 490g target by ~25%. Closing the gap means either adding a paneer night, increasing dal portions by one katori per meal, or accepting a lower daily target. Honest: ₹43/day is tight for 70g/day on whole food unless you are small-framed or fine with a 50-55g target.
Real floor for a 70kg adult hitting actual 70g/day on pulses-plus-eggs-only: closer to ₹55-60/day.
Budget B: ₹600/week (~₹86/day) — mixed anchor rotation
Same pulse base, rotating in paneer twice and soy chunks twice.
- Pulse + carrier grain base (as above) = ~₹260
- 500g paneer across two nights = ₹200 → ~95g protein
- 300g soy chunks dry across two meals = ₹75 → ~156g protein
- Reduce dal nights from 12 to 8 across the week
Weekly total: ~510g protein for ~₹570/week. On target and comfortable. This is the middle-class Indian household’s natural budget band for protein, and the one the rest of this cluster’s cost-focused meal articles — cheap high-protein Indian meals, high-protein meals under ₹100, protein-forward workday lunches — are built around.
Budget C: ₹1,000/week (~₹143/day) — convenience-heavy
Two or three ready-to-eat meals per week at ₹150-₹200, four post-workout whey servings, plus the same whole-food pulse base.
- Pulse + carrier grain base = ~₹260
- 2 × ready-to-eat high-protein meals @ ₹180 = ₹360 → ~50g protein
- 4 × whey scoops across the week @ ~₹90 each = ₹360 → ~100g protein
- Paneer × 2 nights = ₹160 → ~40g protein
Weekly total: ~540g protein for ~₹1,140/week. On target, and the per-gram cost is no longer the point. The premium buys time and format flexibility. At this budget the pillar’s honest advice is that you’ve already won the protein math — further optimization does not pay back.
I tested this on my own kitchen for a week
I ran my own plate through this for April 11-17, 2026. Single adult, ~70kg, mostly vegetarian with two egg breakfasts, cooking at home 6 of 7 days. Koramangala-adjacent kirana prices.
The actual spend:
- Chana dal (500g pack): ₹45
- Moong dal (500g pack): ₹70
- Curd (1L): ₹70
- Paneer (200g): ₹80
- Soy chunks (200g): ₹62
- Eggs (tray of 12): ₹84
- Sattu (500g packaged, not loose): ₹200
- Atta + rice, amortized from existing stock: ~₹60
Total protein spend for the week: ₹671. Estimated protein delivered: ~480g across the week (69g/day average), within ±5g of target.
The one thing the per-g lens caught that I would otherwise have missed: the packaged sattu at ₹400/kg was the single worst ₹/g line item on my plate that week (₹1.90/g). Switching to loose kirana sattu at ₹200/kg drops the per-g cost to ₹0.95 — same food, half the price, no taste difference I could detect. That is the whole case for the per-gram lens in one tangible ₹12 weekly saving. The per-kg view would have rated the sattu “cheap” and missed it entirely.
The three failure modes I see in budget protein plans
1. The ₹/kg trap. The most common mistake is comparing foods by price per kilogram and assuming that translates to value. It does not. Paneer at ₹400/kg and chana dal at ₹90/kg look like a 4× gap; on a per-gram-of-protein basis the gap is 5× because paneer is 18.86g protein/100g vs. chana dal’s 21.55g. The grocer’s unit is not the protein unit. Convert before comparing.
2. The cooking-effort tax. Horse gram is ₹0.46/g on paper and effectively ₹∞/g if you never actually cook it. Same with sprouting moong, soaking rajma overnight, and pressure-cooking dried peas. Every plan I have watched fail, fails on Wednesday. Budget one-third of your weekly protein to low-friction anchors you will actually use mid-week: pre-cooked dal, curd, eggs if you eat them, paneer cubes, sattu. The ₹/g lens rewards friction-free food; it is not a reason to ignore friction.
3. Optimizing the wrong decimal. Swapping moong dal (₹0.59/g) for chana dal (₹0.42/g) saves you ₹1.20 on a 70g day. At weekly scale that is a ₹8 saving. Meanwhile the same week, under-portioning dal from a full katori (7g of protein) to half a katori (3.5g of protein) quietly strips 25g of protein off the week. The lever is portion discipline, not pulse selection. The cheapest pulse in the world does not help if you are not eating enough of it.
Where the cluster goes from here
This pillar is the framework. The specifics live in the cluster children below.
If you want the ingredient-by-ingredient cost deep-dives, start with ragi’s honest protein assessment and urad dal’s nutrition breakdown.
If you want the head-to-head comparisons, the millet comparison, the dal comparison, and the whey vs Indian foods comparison are where to go.
If cooking time is the real bottleneck more than budget, cheap high-protein meals for busy weekdays, meals under ₹100, and protein-forward workday lunches are the practical triangulation.
If you want the data set this pillar’s table is drawn from, the protein-per-rupee comparison table and the cost-per-serving data asset have the full numbers, all derivations, and a downloadable version for your own spreadsheets.
For the food-first companion pillar — same foods, ranked by protein per realistic serving instead of by cost — see High-Protein Indian Foods: The Practical Guide. For the meal-context pillar covering breakfast, office lunch, and everyday slots, see High-Protein Indian Breakfasts and Everyday Meals. For the honest comparison of homemade versus convenient high-protein options, the bridge is here: Comparing Convenient Protein Options.
Final takeaway
The cheapest Indian protein plan is pulses-forward, boring on purpose, and repeated weekly. Chana dal, moong dal, and horse gram do the heavy lifting at ₹0.40 to ₹0.60 per gram of protein. Paneer and tofu buy you meal-fit at a 4-5× premium, which is worth paying when the alternative is a skipped protein anchor. Whey and ready-to-eat meals buy you convenience, not protein economics. Carrier grains — atta, rice, millets — are the rebate line, not the source.
The math is simple once you fix the unit: rupees per kilogram of food divided by grams of protein per kilogram of food. Everything else is detail.












