Why pack price is the wrong number
Pack prices are easy to read and hard to compare. A 120 g tin, a dozen eggs and a 900 g bag of dried lentils sit on the same shelf, each with a different size, a different serving and a different amount of protein inside. The sale ticket tells you what the pack costs. It does not tell you what a gram of protein costs. This guide shows how to work that out by hand with nothing more than the label and a calculator, then checks the answer on a six-product pantry. The same sums run in the protein cost comparison, which does the arithmetic and shows each line of it.
Timing is part of why this matters. Grocery budgets get reset in January, and the sales between 26 and 31 December put familiar items on promotion in unfamiliar pack sizes. A promotion that looks generous on the ticket may be a smaller pack, a different serving or a different kind of protein source. A repeatable method turns those tickets into one comparable number.
What you need from each label
Four numbers do almost all of the work, and a fifth is optional.
- Pack price, exactly as on the ticket or receipt.
- Servings per pack, from the nutrition panel. Many labels say "about", so use the printed number.
- Grams of protein, as printed, and the basis it is printed on: per serving or per 100 g.
- Pack weight or count. It is needed when the label is per 100 g, and useful as a cross-check otherwise.
- Calories, on the same basis as the protein, if you want to see how much protein comes with each 100 kcal.
Everything else on the pack, including front-of-pack claims, is left out. The method uses only printed numbers, so it says nothing about quality, ingredients or what anyone should eat. It is a price comparison, nothing more.
The three steps
- Protein in the pack. For a per serving label, multiply grams of protein per serving by servings per pack. For a per 100 g label, multiply grams per 100 g by the pack weight in grams, then divide by 100.
- Cost per gram of protein. Divide the pack price by the protein in the pack.
- Scale it to something readable. Multiply by 10 for a cost per 10 g of protein, or by your own meal size, such as 25 g, for a cost per meal.
Protein per 100 kcal is a separate division: grams of protein divided by calories, times 100. It does not involve price at all, and it uses the same basis for both numbers, so a per 100 g label can be used without any conversion.
A six-product pantry, worked by hand
The figures below are example label values for six generic products. Swap in the numbers from your own packs; the method does not change.
| Product | Pack price | Pack size | Servings per pack | Protein | Calories |
|---|---|---|---|---|---|
| Tinned fish | $1.89 | 120 g | 2 | 14 g per serving | 70 kcal per serving |
| Eggs, dozen | $4.20 | 12 count | 6 | 12 g per serving | 140 kcal per serving |
| Dried lentils | $2.40 | 900 g | 18 | 24 g per 100 g | 350 kcal per 100 g |
| Yogurt tub | $5.50 | 750 g | 4 | 17 g per serving | 150 kcal per serving |
| Tofu block | $2.75 | 400 g | 4 | 9 g per serving | 90 kcal per serving |
| Bagged jerky | $7.99 | 85 g | 3 | 10 g per serving | 80 kcal per serving |
Tinned fish
The label gives 14 g of protein per serving and 2 servings per pack, so the pack holds 14 × 2 = 28 g. At $1.89 that is $1.89 ÷ 28 = $0.0675 per gram, or $0.675 per 10 g. A 25 g meal at that rate costs $1.69. With 70 kcal per serving, the protein per 100 kcal is 14 ÷ 70 × 100 = 20.0 g.
Eggs, dozen
The pack size is a count, 12, rather than a weight. That is fine for a per serving label: 12 g of protein per serving times 6 servings gives 72 g. Then $4.20 ÷ 72 = $0.0583 per gram, which is $0.583 per 10 g and $1.46 for a 25 g meal. At 140 kcal per serving, that is 8.6 g of protein per 100 kcal.
Dried lentils
This label is per 100 g, so the pack weight matters. The protein is 24 g per 100 g, and the bag is 900 g: 24 × 900 ÷ 100 = 216 g in the pack. At $2.40 the cost is $2.40 ÷ 216 = $0.0111 per gram, so $0.111 per 10 g and $0.28 for a 25 g meal. The calories, 350 per 100 g, give 24 ÷ 350 × 100 = 6.9 g of protein per 100 kcal. The printed figures are for the dry weight, which is the weight you are paying for.
Yogurt tub
Four servings of 17 g make 68 g of protein in the tub. At $5.50, the cost is $5.50 ÷ 68 = $0.0809 per gram: $0.809 per 10 g, $2.02 per 25 g meal. With 150 kcal per serving, there are 11.3 g of protein per 100 kcal.
Tofu block
Four servings of 9 g make 36 g. At $2.75, $2.75 ÷ 36 = $0.0764 per gram, which is $0.764 per 10 g and $1.91 per 25 g meal. At 90 kcal per serving, the protein per 100 kcal is 10.0 g.
Bagged jerky
Three servings of 10 g make 30 g. At $7.99 that is $7.99 ÷ 30 = $0.2663 per gram: $2.663 per 10 g and $6.66 for a 25 g meal. At 80 kcal per serving, protein per 100 kcal is 12.5 g.
The ranked result
| Rank and product | Protein per pack | Cost per 10 g | Cost per 25 g meal | Protein per 100 kcal |
|---|---|---|---|---|
| 1. Dried lentils | 216 g | $0.111 | $0.28 | 6.9 g |
| 2. Eggs, dozen | 72 g | $0.583 | $1.46 | 8.6 g |
| 3. Tinned fish | 28 g | $0.675 | $1.69 | 20.0 g |
| 4. Tofu block | 36 g | $0.764 | $1.91 | 10.0 g |
| 5. Yogurt tub | 68 g | $0.809 | $2.02 | 11.3 g |
| 6. Bagged jerky | 30 g | $2.663 | $6.66 | 12.5 g |
Three readings fall out of the table, and each one is a plain comparison of the numbers.
The cheapest pack is not the cheapest protein. The tinned fish has the lowest ticket at $1.89, yet it ranks third per 10 g, because the pack holds only 28 g of protein. The dried lentils cost $2.40 and hold 216 g, so each gram costs about a sixth of the fish.
The spread is wide. The jerky costs $2.66 per 10 g and the lentils cost $0.11, so the jerky is about 24 times as much per gram of protein. The middle four, from $0.58 to $0.81 per 10 g, sit within 25 cents of each other, so a small price change can reorder them.
Cost and calories are separate questions. The fish has the most protein per 100 kcal (20.0 g) and sits third on cost. The lentils lead on cost and have the fewest grams per 100 kcal (6.9 g). Neither list is better; they answer different questions, which is why the calculator reports both and leaves the choice to you.
Traps that skew the comparison
Per 100 g versus per serving
Labels in some countries print per 100 g only, others print per serving, and many print both columns. Copy one column and keep to it. Mixing, such as 24 g per 100 g with a serving count, quietly multiplies the protein by the wrong figure. If both columns are shown, the per 100 g column is usually the safest because it does not depend on how a maker chose to define a serving.
Counts versus weights
Eggs and some wrapped items are sold by count. A pack of 12 has no useful weight on its own, but a per serving label still works: protein per serving times servings per pack. If you do know the weight and the label is per 100 g, enter the weight instead.
Servings of zero, and protein of zero
A serving count of 0 cannot be right, since it would put zero grams of protein in the pack and divide the price by zero. Treat it as a typing slip and check the panel. A product that really does print 0 g of protein has no cost per gram of protein, so it stays off the ranking instead of showing an infinite price.
Comma decimals
In many countries a price is written 4,99. The sums are the same, but a calculator that only reads points will turn 4,99 into 499 or an error. The comparison page reads both and prints back the number it used for each row. Thousands separators are the one place to be careful: 1.299,50 and 1,299.50 both mean one thousand two hundred ninety-nine and fifty hundredths.
Missing calories
Calories are optional. When they are left out, the protein per 100 kcal column shows a dash and the rest of the row still ranks. A calories figure of 0 is treated the same way, since dividing by it has no meaning.
Ties
Two products can come out with exactly the same cost per gram, for example $3 for 30 g and $6 for 60 g. They share a rank, and the next product takes the rank after the group: 1, 1, 3. Rounding is not used to decide a tie, so a product at $0.6818 and another at $0.6824 stay in different places even though both show as $0.68 on a two-decimal display.
Checking a sale price
The same sums turn a sale ticket into a target. To find the price at which one pack would match another, multiply the other pack's cost per 10 g by the protein in your pack and divide by 10. The yogurt tub holds 68 g and the tofu block costs $0.764 per 10 g, so the tub would tie with the tofu at $5.19 instead of $5.50. The jerky holds 30 g, and to match the eggs at $0.583 per 10 g it would need to cost $1.75 instead of $7.99. Try a sale price in the calculator and the ranking updates on the spot.
Multi-buy offers work the same way. Divide the offer price by the number of packs to get a price per pack, enter that as the pack price, and compare as before.
Keeping the answer
A comparison is most useful at the shelf, so the page makes a one-page fridge card from the ranked list. It prints up to 10 products on a single sheet, with the cost per 10 g, the cost per meal and the protein per 100 kcal. A CSV of the same rows opens in any spreadsheet if you want to keep a record from one month to the next and watch how prices move. Both are made in your browser from the numbers you typed.
Ready to run your own shelf? Open the protein cost comparison, or press the sample button there to load the six pantry products from this guide.
Related label tools
- Sugar grams to teaspoons, for turning label grams of sugar into teaspoons.
- Holiday recipe scaler, for scaling an ingredient list with exact fractions.
- Potluck ingredient cards, for printing a card for each dish.
- Is it ultra-processed? Label checker, for reading an ingredient list.
Run your own shelf
Type the numbers from up to 10 packs and get the ranking, the arithmetic, a bar chart, a fridge card and a CSV.
Compare protein costFrequently asked questions
What is the quickest way to compare protein cost between two packs?
Divide each pack price by the grams of protein in the pack. The pack with the smaller answer costs less per gram of protein. Multiply by 10 to get a cost per 10 g that is easy to read.
Does the pack weight matter if I know the servings per pack?
For a per serving label it does not change the sum, because grams of protein per serving times servings per pack already gives the protein in the pack. For a per 100 g label you need the pack weight.
What happens when two products tie?
They share a rank. If two products tie for first, the next product is third. The calculator marks tied ranks with an equals sign.
Does the calculator give diet or health advice?
No. It works only from the numbers printed on packs and the prices you type in.