Twenty-six Indian foods. One number per food: the rupee cost of a gram of actual protein, at April 2026 Bengaluru kirana prices. The question this page answers is the one most people actually ask at the dal counter — which food gives me the most protein per rupee, and by how much? Protein values are from IFCT 2017 (with USDA FoodData Central filling the gaps on tofu, curd, oats, and whey), and prices are loose-bin kirana prices, not packaged-brand. If you want the same foods sorted by what a realistic serving costs instead, that is the per-serving data asset running alongside this one.
About this dataset
This is the full-corpus table for the Protein Per Rupee in India pillar. Where the pillar picks a handful of foods to argue a point, this page carries all of them — pulses, soy, millets, carrier grains, sattu, dairy, tofu, nuts, one lacto-ovo egg row, and whey at two tub tiers — with the math transparent enough that you can re-run it against whatever your shop is charging this month.
Scope:
- Foods are vegetarian-first. Whole egg appears once as a lacto-ovo reference row; no chicken, mutton, or fish.
- No brand-specific rows, no ready-to-eat meals, no protein bars. Convenience is discussed in prose and linked to the bridge article on convenient protein options; it does not get a row here.
- Supplements are out of scope except for whey, which appears as a benchmark at two tub sizes to keep the comparison honest.
Methodology
Data sources
- Nutrition: IFCT 2017 (Indian Food Composition Tables, NIN) for all pulses, cereals, millets, dairy, nuts, and eggs. USDA FoodData Central for tofu (#172475), curd (#171287), and oats (#173904), where IFCT coverage is thin. Whey protein concentrate is brand-dependent at the quoted 77g per 100g.
- Pricing: April 2026 Bengaluru mid-tier kirana shops, loose-bin prices. Where loose is not available (tofu, oats, whey), published pack prices at commonly stocked sizes.
- Daily-target context: ICMR-NIN RDA 2020. 0.83g/kg for a healthy adult; 1.0g/kg adjustment for cereal-dominant diets. No dosage or deficiency claims in this article.
Derivation formula (stated verbatim)
₹ per gram of protein = (₹ per kg of food) ÷ (g protein per 100g × 10)
Example: chana dal at ₹90 per kilogram and 21.55g protein per 100g. Protein per kilogram = 21.55 × 10 = 215.5g. Cost per gram of protein = 90 ÷ 215.5 = ₹0.42.
Sanity rule
A single-source whole-food 70g-per-day plan should cost under ₹50. If your math lands above ₹100, you have divided by the per-100g number instead of multiplying by 10 first. This is a common unit error.
Exclusions
Chicken, mutton, fish, and other non-egg non-veg; all branded products and ready meals; all supplements other than whey.
The comparison table
One row per food. ₹/g of protein is the primary sort key, cheapest first within each category. A secondary g-protein-per-rupee column is included for readers who prefer that framing.
Pulses and legumes
| Food | IFCT | ₹/kg | Protein /100g | ₹/g protein | g protein/₹ | Standard serving | Protein /serving | Cost /serving |
|---|---|---|---|---|---|---|---|---|
| Chana dal | B001 | 90 | 21.55 g | ₹0.42 | 2.38 | 50g (1 katori cooked) | 10.8 g | ₹4.50 |
| Horse gram (kulthi) | B012 | 100 | 21.73 g | ₹0.46 | 2.17 | 50g | 10.9 g | ₹5.00 |
| Masoor dal | B013 | 130 | 24.35 g | ₹0.53 | 1.87 | 50g (1 katori cooked) | 12.2 g | ₹6.50 |
| Moong whole | B011 | 130 | 22.53 g | ₹0.58 | 1.73 | 50g | 11.3 g | ₹6.50 |
| Moong dal (split) | B010 | 140 | 23.88 g | ₹0.59 | 1.70 | 50g (1 katori cooked) | 11.9 g | ₹7.00 |
| Kala chana (whole) | B002 | 110 | 18.77 g | ₹0.59 | 1.71 | 50g | 9.4 g | ₹5.50 |
| Toor (arhar) dal | B021 | 160 | 21.70 g | ₹0.74 | 1.36 | 50g (1 katori cooked) | 10.9 g | ₹8.00 |
| Urad dal (split) | B003 | 170 | 23.06 g | ₹0.74 | 1.36 | 50g (1 katori cooked) | 11.5 g | ₹8.50 |
| Rajma (red kidney bean) | B020 | 180 | 19.91 g | ₹0.90 | 1.11 | 60g (1 katori cooked) | 11.9 g | ₹10.80 |
Soy
| Food | Source | ₹/kg | Protein /100g | ₹/g protein | g protein/₹ | Standard serving | Protein /serving | Cost /serving |
|---|---|---|---|---|---|---|---|---|
| Soy chunks (defatted, dry) | IFCT B025 + defatting | 220 | 52 g | ₹0.42 | 2.36 | 30g dry (~90g rehydrated) | 15.6 g | ₹6.60 |
Cereals and carrier grains
| Food | IFCT/USDA | ₹/kg | Protein /100g | ₹/g protein | g protein/₹ | Standard serving | Protein /serving | Cost /serving |
|---|---|---|---|---|---|---|---|---|
| Wheat atta (whole) | A019 | 45 | 10.57 g | ₹0.43 | 2.35 | 60g (2 rotis) | 6.3 g | ₹2.70 |
| Bajra (pearl millet) | A003 | 55 | 10.96 g | ₹0.50 | 1.99 | 60g (1 bhakri) | 6.6 g | ₹3.30 |
| Jowar (sorghum) | A005 | 55 | 9.97 g | ₹0.55 | 1.81 | 60g (1 bhakri) | 6.0 g | ₹3.30 |
| Rice, parboiled | A014 | 50 | 7.81 g | ₹0.64 | 1.56 | 80g (1 plate cooked) | 6.2 g | ₹4.00 |
| Ragi (finger millet) | A010 | 70 | 7.16 g | ₹0.98 | 1.02 | 60g (1 ragi roti) | 4.3 g | ₹4.20 |
| Oats | USDA FDC #173904 | 170 | 10.7 g | ₹1.59 | 0.63 | 40g (1 bowl cooked) | 4.3 g | ₹6.80 |
Sattu
| Food | Source | ₹/kg | Protein /100g | ₹/g protein | g protein/₹ | Standard serving | Protein /serving | Cost /serving |
|---|---|---|---|---|---|---|---|---|
| Sattu (roasted bengal gram flour) | Derived from IFCT B002 roasted | 200 | 21 g | ₹0.95 | 1.05 | 40g (1 glass drink) | 8.4 g | ₹8.00 |
Dairy and tofu
| Food | IFCT/USDA | ₹/kg | Protein /100g | ₹/g protein | g protein/₹ | Standard serving | Protein /serving | Cost /serving |
|---|---|---|---|---|---|---|---|---|
| Milk (full cream) | Derived | 66/L | 3.3 g | ₹2.00 | 0.50 | 250ml (1 glass) | 8.3 g | ₹16.50 |
| Tofu (firm) | USDA FDC #172475 | 350 | 17.0 g | ₹2.06 | 0.49 | 100g (1 side portion) | 17.0 g | ₹35.00 |
| Paneer (full-fat) | L003 | 400 | 18.86 g | ₹2.12 | 0.47 | 80g (1 side portion) | 15.1 g | ₹32.00 |
| Curd (full-fat dahi) | USDA FDC #171287 | 70 | 3.10 g | ₹2.26 | 0.44 | 150g (1 katori) | 4.7 g | ₹10.50 |
Nuts
| Food | IFCT | ₹/kg | Protein /100g | ₹/g protein | g protein/₹ | Standard serving | Protein /serving | Cost /serving |
|---|---|---|---|---|---|---|---|---|
| Peanut (ground nut) | H012 | 140 | 23.65 g | ₹0.59 | 1.69 | 30g (small handful) | 7.1 g | ₹4.20 |
| Almond | H001 | 800 | 18.41 g | ₹4.35 | 0.23 | 20g (~15 pieces) | 3.7 g | ₹16.00 |
Egg (lacto-ovo reference row)
| Food | IFCT | Cost basis | Protein /100g | ₹/g protein | g protein/₹ | Standard serving | Protein /serving | Cost /serving |
|---|---|---|---|---|---|---|---|---|
| Whole egg | M001 | ₹7/egg (tray-of-30) | 13.28 g (~6.6g/egg) | ₹1.05 | 0.95 | 2 eggs (~100g) | 13.3 g | ₹14.00 |
Whey benchmark (two tub tiers)
| Tier | ₹/kg of powder | Protein /100g | ₹/g protein | g protein/₹ | Standard serving | Protein /serving | Cost /serving |
|---|---|---|---|---|---|---|---|
| Whey concentrate, 2-kg tub | ~1,160 equiv. | 77 g | ₹1.50 | 0.66 | 30g (1 scoop) | 23.1 g | ₹34.80 |
| Whey concentrate, 1-kg tub | ~2,500 | 77 g | ₹3.25 | 0.31 | 30g (1 scoop) | 23.1 g | ₹75.00 |
Reading the data
Six patterns fall out of the table that are worth saying out loud.
1. The whole-food floor sits at ₹0.40 to ₹0.50 per gram of protein
Chana dal (₹0.42), soy chunks (₹0.42), wheat atta (₹0.43), horse gram (₹0.46), and bajra (₹0.50) all land within a 10-paise window. That band is the floor. Sub-₹0.40 per gram of protein is not achievable at kirana scale on any food with real protein density — any claim below it is either a loss-leader promotion, a unit error, or a product with thin protein content dressed up as a “protein” item. For the dal-by-dal view of this floor, see the dal protein comparison.
2. Dairy and tofu are a 4 to 5× premium over pulses
Milk at ₹2.00, tofu at ₹2.06, paneer at ₹2.12, curd at ₹2.26 — all four land between ₹2.00 and ₹2.30 per gram of protein, roughly five times chana dal. That is not a reason to stop buying them. Paneer and tofu earn their price by being easier to build a meal around; a 50g paneer cube turns a sabzi into a protein anchor with zero extra thought. Curd and milk do the same quietly — they push everything else you eat up by 4 to 8g. The price is the convenience tax on meal-fit.
3. Ragi is the outlier you would not expect
Ragi reads as a cheap millet and ends up at ₹0.98 per gram of protein — more than twice bajra, more than any other traditional grain on this table. The reason is density: ragi is 7.16g protein per 100g against bajra’s 10.96g and jowar’s 9.97g (all IFCT 2017). Ragi still belongs in an Indian kitchen for its calcium, fiber, and texture. It just does not belong at the top of a protein-per-rupee ranking. The head-to-head is in the bajra vs jowar vs ragi comparison.
4. Carrier grains look cheap per gram but are throughput-limited
Wheat atta at ₹0.43 per gram of protein is the second-cheapest source on the whole list. But one roti is about 6g of protein. Hitting a 70g/day target on wheat alone would take twelve-plus rotis, which is over 1,200 kcal of wheat before you add anything else. Rice at ₹0.64 runs into the same wall — one plate gets you 6g. Cheap per gram of protein is not the same as practical per meal. Grains carry the plate; pulses, soy, and dairy carry the protein number.
5. Whey’s 1-kg tub is the most expensive per-gram source in the table
At ₹3.25 per gram of protein, a 1-kg whey tub is more expensive than almonds, more expensive than every dal, and about 8× chana dal. The 2-kg tub cuts the number to ₹1.50 per gram — still pricier than every whole pulse, still cheaper than dairy. The per-scoop framing (“24g for ₹75!”) hides all of this; per-gram is the honest lens. The whey vs Indian food protein comparison unpacks where whey actually earns its slot (convenience, digestion speed, post-workout timing — not price).
6. Eggs sit in the same order of magnitude as whole pulses
Whole eggs at ₹1.05 per gram of protein are pricier than chana dal or soy chunks but cheaper than sattu and less than half the cost of paneer. For lacto-ovo readers, that places two eggs at breakfast in the “boring, affordable, repeatable” bracket — 13g of protein for ₹14, same order as a katori of dal. Pure-vegetarian readers can ignore this row; the other 25 deliver a full dataset without it.
Limits of this dataset
Honest caveats, stated once.
- Regional variance is real. Bengaluru loose-bin prices run 10-15% above Punjab-Haryana pulse mandis and 10-20% below Mumbai retail. Apply a ±15 to 20% band to every ₹/g number before comparing with your city.
- Brand-vs-loose delta. Packaged-brand dals and millets typically run 20-40% higher per kilogram than loose-bin, which pushes ₹/g of protein up proportionally. A ₹0.42 chana dal in loose becomes closer to ₹0.55 in brand packaging.
- Seasonal variance on pulses. Toor and moong prices swing ±10% within a year on monsoon-driven supply cycles. Chana and masoor are more stable.
- Cooking yield. The table is in raw/dry weights for all pulses, grains, and soy chunks. Cooked weights roughly 2.5 to 3× the dry weight, which does not change ₹/g of protein but does change the plate size you end up eating.
- Nutrition is food-composition data, not bioavailability data. IFCT values are total protein; digestibility runs lower for many plant sources, which is why ICMR-NIN RDA 2020 bumps the target from 0.83g/kg to 1.0g/kg on cereal-dominant diets. We have kept this article away from the bioavailability question because it is a different article.
- Cost is one lever. A ₹/g-of-protein table will tell you what is cheapest. It will not tell you what you will actually cook twice a week, what travels to office, or what your family will eat without complaint. The companion per-serving data asset and the meal-ideas children in this cluster cover those questions.
Related pages
- The Protein Per Rupee in India pillar — the narrative version of this dataset.
- The per-serving data asset — the same foods, same numbers, sorted by what a realistic meal portion actually costs.
- The comparing convenient protein options bridge — homemade-versus-ready framing for when the ₹/g number is not the only lever.
- Ingredient deep-dives from this cluster: soy chunks, sattu.
- Head-to-head comparisons: dal protein comparison, bajra vs jowar vs ragi, whey vs Indian food protein.
Final note
This table is a reference, not a prescription. Use it next to the per-serving lens, not instead of it. A food that wins on ₹/g of protein but fails on Wednesday — because you do not actually cook it, or because a katori of it is not a real meal — is not cheap. Combine the floor foods (chana dal, soy chunks, wheat atta, horse gram, bajra) with one dairy or tofu anchor and one convenience fallback, and the budget question mostly solves itself.


