A tuna can is named 145 g, but the retailer divides its price by 102 g for the drained-weight unit rate. Neither number has to be a mistake. They describe different quantities, and choosing the wrong one changes the comparison before household waste enters the picture.
On October 24, 2026, we read ten Tesco en-GB product pages and recomputed their displayed GBP unit rates. We did not buy, drain, weigh or taste the products. These are dated public-page observations, not a local basket quote or a claim that every item can currently be ordered. Two pages explicitly said out of stock.
A lower unit price can still need more cash today
Suppose you need one, two or four cans. Using only the October 24 snapshot, single cans cost 65p each and the four-pack costs 249p. This is a generated purchase-quantity comparison, not a new price check.
| Assumed need | Buy that many singles | Buy one four-pack | Extra cans in the pack |
|---|---|---|---|
| 1 can | 65p | 249p | 3 |
| 2 cans | 130p | 249p | 2 |
| 4 cans | 260p | 249p | 0 |
For a need of two, the pack takes 119p more at checkout even though its price per can is lower. For four, the pack takes 11p less. Neither result tells us what you will eventually use. Extra cans can be usable inventory; calling all of them waste would invent an outcome we did not observe. Match drained weight first, then ask separately about the quantity needed and the cash required.
The three demand cases and generator retain the arithmetic in integer pence. They exclude delivery, member offers and future use. Recheck actual prices and stock before buying.
The ten observations and their selected denominators
The price column uses the displayed non-member price. The rate column is our calculation rounded to two decimal places and checked against the page. “Drained” is retained as part of the basis, not dropped from the unit label.
| Product page | Listed GBP price | Quantity used for this rate | GBP rate, recalculated |
|---|---|---|---|
| Basmati rice, 1 kg | 1.79 | 1,000 g dry | 1.79/kg |
| Finest basmati rice, 500 g | 1.65 | 500 g dry | 3.30/kg; page out of stock |
| Microwave basmati, 250 g | 0.70 | 250 g cooked | 2.80/kg |
| Spring-water tuna, 145 g | 0.65 | 102 g drained | 6.37/kg drained |
| Four tuna cans, 4 × 145 g | 2.49 | 4 × 102 = 408 g drained | 6.10/kg drained |
| Large free-range eggs, six | 2.10 | 6 eggs | 0.35/egg |
| Large free-range eggs, twelve | 3.35 | 12 eggs | 0.28/egg |
| Canned sweetcorn, 325 g | 0.53 | 260 g drained | 2.04/kg drained |
| Frozen sweetcorn, 1 kg | 1.90 | 1,000 g frozen | 1.90/kg |
| Semi-skimmed milk, 2 litres | 1.60 | 2,000 ml | 0.80/litre; page out of stock |
The milk page describes Northern Ireland milk. We did not verify delivery eligibility, local stock, fees or checkout substitutions. The rice products also have different tiers. This table audits quantity bases; it does not isolate pack size as the cause of every price difference.
A 145 g name and a 102 g denominator can both be right
The single tuna page separately lists 145 g net contents and 102 g drained weight. At £0.65, dividing by net contents gives 0.65 ÷ 145 × 1,000 = about £4.48/kg. Dividing by drained weight gives 0.65 ÷ 102 × 1,000 = about £6.37/kg, matching the page's drained basis.
No extra charge was added. The denominator changed. Use drained weight when the intended comparison is the drained product, and do not compare that figure with another product's net-content rate while pretending the basis is the same. The 43 g difference is not a measured household-waste rate or a prediction of how much food a person discards.
The canned corn page makes the same distinction: net contents 325 g, drained weight 260 g. The selected denominator is explicit on that page, so we do not need to infer it from the title or from a nutrition serving size.
Multiply the denominator as well as the number of cans
The four-can tuna page lists 4 × 145 g net and 4 × 102 g drained. For its £2.49 price, the drained denominator is 408 g. Using 102 g for the whole multipack would make its unit price four times too large; using 580 g would switch back to the net-content question.
At the observed listed prices, four separate £0.65 cans total £2.60, which is £0.11 more than £2.49. That is a narrowly defined price comparison for equal declared drained amounts in this product family. It is not a measured saving after delivery, substitutions, different actual contents or unused food. A multipack also requires more money at that checkout than one can.
Stop when the food state or dimension does not match
The microwave rice description says it is cooked, and its ingredients include water. The dry-rice and cooked-rice prices can each be expressed per kilogram as sold, but those kilograms do not establish equal prepared portions. We did not measure a cooking yield, so the code blocks a direct equivalent-yield comparison rather than inventing a conversion factor. The two dry rice tiers can be normalized by mass while still differing in quality and availability.
Likewise, a kilogram of frozen corn and drained canned corn are not automatically the same prepared portion. Their storage, preparation and final yield need separate consideration. Our comparison gate marks their differing states; it does not conclude that one is the cheaper meal.
The two egg packs can be compared per egg within the stated size category. Their total edible mass was not recorded, so we do not silently turn twelve eggs into kilograms. Milk's 2 litres becomes 2,000 ml, yielding £0.08 per 100 ml at the listed price. Converting that volume to grams would require a suitable mass/volume basis that this observation does not provide.
Keep full precision before rounding the label
The twelve-egg pack's £3.35 divided by twelve is £0.279166… per egg, shown as £0.28. Multiplying the rounded £0.28 by twelve gives £3.36. The extra penny is a rounding effect, not evidence of a hidden charge. Use the pack price for payment totals and unrounded calculations for comparisons, then round the final display.
All ten recomputed rates matched the displayed two-decimal rate on their respective bases. Matching arithmetic does not prove a product is in stock locally, that its page is unchanged, or that its quality is identical to another product.
Household use is a second calculation, not drained weight
Our earlier six cases use invented currency units and household-use amounts. They are not measurements of the ten products above. The small pack costs 3.60 for 300 g; a large pack costs 9 for 1,000 g.
| Fictional case | Bought / ultimately used | Per 100 g bought | Per 100 g used |
|---|---|---|---|
| Small pack, all used | 300 / 300 g | 1.20 | 1.20 |
| Large pack, all used | 1,000 / 1,000 g | 0.90 | 0.90 |
| Large pack, 100 g discarded | 1,000 / 900 g | 0.90 | 1.00 |
| Large pack, 250 g discarded | 1,000 / 750 g | 0.90 | 1.20 |
| Large pack, 400 g discarded | 1,000 / 600 g | 0.90 | 1.50 |
| Two-pack offer at 16, 800 g discarded | 2,000 / 1,200 g | 0.80 | About 1.33 |
For these inputs, 9 ÷ (3.60 ÷ 300) = 750 g is the break-even use. It is not a general permitted-waste percentage. Food still suitable and intended for later use is not already discarded; keep “used,” “remaining” and “discarded” separate until the pack's use is finished. No storage experiment was performed, and price arithmetic cannot determine whether food is safe to keep.
Reproduce the checks and keep unknowns visible
The ten-row observation CSV, Python code and full results include source URLs, selected quantity, state and stock notes. Run python3 label-check.py if Python 3 is already available. It uses embedded dated observations and no personal files, shopping account, network or live-price feed.
The program recomputes ten rates, checks multipack arithmetic and rounding, and blocks the dry/cooked, drained/frozen and volume/mass comparisons for the stated reasons. Six altered inputs are rejected: unsupported unit, zero quantity, unknown quantity, negative price, non-finite price and drained amount exceeding net contents. The supported unit list is a code limit, not a claim that other measurement units are invalid.
The earlier six-case CSV, results and JavaScript source remain available. Recheck the current product page and physical label before an actual purchase. The useful first result is the denominator you can justify, including a clear reason when a comparison cannot yet be made.
