06.08.2026 offerhopper.ai team 9

Which Pack Is Actually Cheaper? Why the Unit Price Won't Tell You

Which Pack Is Actually Cheaper? Why the Unit Price Won't Tell You
A supermarket toilet paper aisle: packs of 4, 8, 10 and 12 rolls, some marked double length, some counted in sheets. One shelf, four different ways of saying how much paper is in the pack. — Photo by Marques Thomas on Unsplash

Eight rolls of kitchen paper for €4.95, or three rolls for €2.99? The answer is neither obvious nor the one the shelf label points at.

When you compare pack sizes, the best pack is rarely the cheapest per sheet, and rarely the one matching the number you typed. It is the cheapest combination that covers roughly what you need. Finding it means knowing what one roll actually contains, and neither the price per kilo nor the German Grundpreis on the shelf will tell you.

That is the whole job. Here is how we do it, using toilet paper and kitchen roll in a German supermarket as the worked example.

Why Can't You Tell Which Pack Is Cheaper?

Because "1 Rolle" is not a measurement.

Here is every kitchen roll on one REWE shelf on one afternoon, in sheets per roll:

43   45   72   72   74   90   128   160

The smallest roll is a quarter of the largest. Every one of those packages says "Rolle."

So "six rolls" means anywhere between 258 and 960 sheets, depending on which roll you happened to picture. The shop cannot know which you meant. Neither can you.

Nobody is lying here. A roll is a physical object and it comes in sizes, the same way shoes do. Shoes print the size on the box.

The uncomfortable part is that picking packs up and putting them down felt like comparing them, while what you were actually doing was ranking eight numbers that measure eight different things. It felt productive the entire time.

Doesn't the Unit Price Already Fix This?

Partly, and less than you think.

The German Preisangabenverordnung (PAngV) requires shops to print a Grundpreis next to the total, and § 5 sets what it is measured in: price per kilogram, litre, cubic metre, metre or square metre. You have used it without thinking. A 250 g pack against a 400 g pack, and the small grey line does the arithmetic for you.

Now read § 4 Absatz 1. The obligation covers goods offered by weight, volume, length or area. Goods sold by piece count are not on that list.

A pack of eight toilet rolls is sold by count. No unit price is required at all. Nothing is being withheld and no shop is cutting corners. The rule simply does not reach the shelf where you needed it most.

The exemptions in § 4 Absatz 3 make the same point. Among them are goods made up of different products packed together without being mixed, which covers variety packs and multipacks. The law looked at the case where one number cannot describe the contents and declined to demand one.

And where it does apply, it answers a different question than your list asks.

Say every pack stated its sheets. You work out the price per sheet and you have exactly the number the regulation wants you to have. On that shelf the winner was the eight-roll pack: 1024 sheets for €4.95, just under half a cent each, best unit price by a distance.

You wanted six rolls, about 436 sheets. Best unit price means paying €4.95 for two and a bit times the paper you asked for, most of it destined for a cupboard. A three-roll pack covered the same request for €2.99.

Unit price ranks products. A shopping list asks for a quantity. They agree often enough that the gap is easy to miss, and when they disagree the unit price confidently points the wrong way.

How Do You Compare Packs That Measure Different Things?

You need one conversion: how many sheets are in a roll of this particular thing. We call those bridges.

Each bridge is one measured claim about one category. In toilet paper a roll is about 178 sheets. In kitchen roll it is about 73. Never a global constant, because a roll of cling film and a roll of toilet paper have nothing in common except being cylindrical.

The evidence comes from what shops already publish. A listing reading "3 Rollen, 160 Blatt" is a shop telling us what a roll is without meaning to. Names carry some of it, descriptions more, the detail fields the rest. It exists because marketing copy has to say something, and it is the best evidence anyone has.

Getting from your typed words to a quantity we can compare at all is a separate problem, covered in how offerhopper.ai understands your shopping list. This post picks up after that, once we know you wanted six rolls and have to work out what a roll is.

Four shapes of answer become possible, and they are not equally trustworthy.

Four ways to answer a conversion: direct, inverse, chain, and junction. DIRECT INVERSE CHAIN JUNCTION Toilet paper: 1 roll = 178 sheets listings stated it outright The same bridge, asked backwards 1760 sheets / 178 = 10 rolls Kitchen roll: 1 pack = 4.4 rolls, 1 roll = 73 sheets, so 1 pack = 320 Two bridges from one starting point, divided. The one that can lie.

Direct and inverse bridges are bookkeeping: a shop stated the number, or it stated the reciprocal.

Chains are where this starts paying. We know separately that a kitchen roll pack holds about 4.4 rolls, and that a roll holds about 73 sheets. Put them together and a pack is around 320 sheets. No listing says that anywhere. It is true because two other things are true, and it lets a pack with no sheet count printed on it compete against one that has.

Junctions need watching, and we learned that the hard way.

Soap is sold inconsistently. Some states a weight, some a volume, and no listing gives both. But two bridges start from the same word: a pack of soap averages 120 g, and a pack of soap averages 356 ml. Divide one by the other and what falls out looks like a density for the category.

A pack of soap averages 120 grams and 356 millilitres, but the two averages describe bar soap and liquid soap. Dividing them gives 2.95 grams per millilitre, roughly three times the density of water. 1 pack of soap 120 g 356 ml from bar soap from liquid soap 120 / 356 1 ml would weigh 2.95 g Nothing in a bathroom is three times denser than water. The two averages describe different products.

Water is 1.0 g/ml. Soap is not three times denser than water. The arithmetic is fine and the inputs were never about the same object: the 120 g came from bars, the 356 ml from bottles, and the word "pack" hid the difference.

So junctions rank last of the four, and where a junction is the only answer available we would rather tell you we cannot say. A wrong conversion gives no sign that it is wrong. It just makes the wrong shop look cheapest, and nothing prompts you to check.

What Does a Better Decision Look Like?

A real run, this week, from a village in Rheinland-Pfalz. Two lines: six rolls of kitchen paper, ten rolls of toilet paper.

You asked for In sheets Best pack found Price
6 rolls kitchen paper about 436 1 pack, 4 rolls x 128 = 512 €2.75
10 rolls toilet paper about 1784 1 pack, 8 rolls x 220 = 1760 €2.65

Both look wrong. Six became four, ten became eight, and by roll count you have been short-changed twice.

In sheets, the kitchen paper is 512 against the 436 you asked for. Covered, cheaply, with a pack you would probably have walked past.

The toilet paper is the interesting one. 1760 against 1784 is one and a half per cent under, so it really is slightly short. Closing that 24-sheet gap means a second pack: another €2.65, and 3,520 sheets of toilet paper in a cupboard. So it takes the shortfall and tells you, instead of rounding up and letting you discover the second pack at the till. Fifteen per cent is the limit: below that we accept the gap, above it we buy the extra pack.

That is the decision a careful person makes with four spare minutes and data they do not have. By hand it means finding the sheet count for every product on both shelves, which is on the back of some boxes, in small print on others and missing from the rest. Then multiplying each out, dividing by price, discarding the ones that are only cheap per sheet because they are enormous, and deciding along the way what "six rolls" even meant. Nobody does this. People take the familiar brand, or the biggest number on the front, and feel vaguely cheated later.

The number behind it is on display: for that toilet paper, 178 sheets per roll, learned from listings rather than assumed. It is stated so you can check it. You are holding the pack. If it says 250 and we said 178, you know exactly how much to trust the rest, and you can overrule us where you stand.

Then it scales, which is the actual point. One pack on one shelf you could squint at. Your list is fifteen items across two or three shops, and every line is the same tangle. Until they share a unit, the shop that looks cheapest is whichever one phrased its offers with the biggest numbers, and that is a typography contest. Worse, a single item measured in the wrong unit can send you to the wrong shop for the other fourteen.

The Arithmetic Was Never the Hard Part

The regulation assumes shoppers struggle with division. For 250 g against 400 g, a price per kilo is exactly the right help.

Where people actually get stuck is the products where nobody agreed what is being counted. Rolls, sheets, wash loads, packs, portions. A price per kilo of laundry detergent answers a question nobody asked, because what you use is a wash load and the concentrate beside it does twice the work per kilo.

That is not a failure of the law. It is what is left after the law has done the part that can be written down, and the rest has to be learned from the shelf, one category at a time.

What you get is narrow and worth having: your list, priced across the supermarkets near you, in units that mean the same thing on both sides, with the best pack size chosen for the amount you actually wanted. Where we converted, we show what we used. Where we could not, we say so.

Comparing packs is one half of the job. Deciding whether a second shop is worth the drive at all is the other, and the route optimization algorithm post covers that cost function in detail. If you would rather just watch it work, plan a shopping trip with your own list and see which pack sizes come back, or hand the whole thing to an assistant that already knows your household size by building a personal AI grocery assistant.

You do not have to do this arithmetic in the aisle. We would rather do it, show the work, and be easy to catch when we are wrong.

offerhopper.ai

About offerhopper.ai

The AI-driven shopping route planner for expats and locals in Germany.