Thirty days, and not a day less

Was it ever that price?

Type in the two numbers from the tag. We'll tell you what the old one was legally allowed to be.

Type in the two numbers from the tag. We'll tell you what the old one was legally allowed to be.

Two numbers off the price tag. That's all this needs.

Below: where the rules come from, and what they do not cover. Open whichever one you want.

What the shop is allowed to call the old price

Across the European Economic Area, a price reduction has a reference point fixed by law. Article 6a of the Price Indication Directive, added by the Omnibus Directive and in force since 28 May 2022, says the prior price a trader announces must be the lowest price that trader charged over a period of at least thirty days before the reduction. Not the manufacturer's suggested price, not the price at the shop across the road, not what it cost last spring — their own lowest, in that window.

Thirty days is a floor rather than the figure. A member state may require longer, and some do.

In the United Kingdom the rule is a standard rather than a number. The old price has to have been genuinely charged, on the same site, for long enough beforehand to mean something. The Competition and Markets Authority published final price-transparency guidance under the Digital Markets, Competition and Consumers Act in November 2025 and opened its first investigations under those powers at the same time.

In the United States there is no window at all. The Federal Trade Commission's guides on deceptive pricing ask only that a former price be bona fide: openly and actively offered, for a reasonably substantial period, in the recent and regular course of business. A price held for a weekend to make room for a markdown is the thing those guides were written about.

Why the percentage is the part that slips

A shop can be scrupulous about the old price and still print a number beside it that the two prices do not support. This is the one thing a pair of numbers can prove on its own: seventy-five per cent off 199.99 is 49.99, and if the till says 59.99 then the discount is seventy per cent and the sign is wrong, whatever the old price was.

The European Court of Justice closed the other half of that gap in September 2024. In a case brought against a German supermarket chain, it held that where a reduction is expressed as a percentage, the percentage must itself be calculated from the thirty-day low — and that calling a price a "highlight" does not help if that price is above the low. Before that judgment a trader could arguably print the lowest recent price in small type and compute the eye-catching percentage from something else. Not any more.

Real discounts are smaller than you expect

Reporting on recent Black Fridays keeps landing in the same place. One analysis of last year's event found roughly a third of the deals beat no price the same retailer had already charged in October or early November. Genuine electronics markdowns cluster closer to a fifth than to the numbers on the posters.

That is worth holding on to, because the instinct runs the other way: a bigger number looks like a better deal, when in several categories a very large number is mostly evidence that the starting price was decorative. Furniture, mattresses, jewellery and luggage are permanently on sale in a way that televisions are not.

None of which makes any particular seventy per cent dishonest. It makes it worth one check.

The check that works in any country

Inside the EEA, start with the page you are already on. The shop is required to show you the prior price, so the number is supposed to be right there — and if what it shows is a recommended retail price or a manufacturer's list price rather than its own recent low, that is the answer without going anywhere.

Everywhere else, and for checking whether the shown number is true, you need the price history. For Amazon there are trackers that keep it. For most other retailers nobody keeps it publicly, and the honest answer is that you cannot verify the claim at all.

When there is nothing to look up, there is still the cheapest test there is: take a screenshot. A sale that is still running at the same price in a fortnight was not a sale, and the screenshot is what tells you so.

What this page does not do

It does not score your deal. Two prices carry no information about what that shop charged last month, so any confidence percentage built from them is a guess about the category wearing the costume of a verdict on your tag. There are tools that will give you one. This one computes only what the numbers and the calendar actually support.

It also does not tell you that a shop has broken the law. It tells you what the rule where you are requires the old price to be, and what to compare it against. Whether a particular trader met that is a question about facts this page does not have.

<nav class="more-tools" aria-labelledby="more-tools-h"> <h2 id="more-tools-h">More small sites</h2> <ul> <li><a href="/guess-the-font/"><span class="more-emoji" aria-hidden="true">🔠</span><span class="more-text"><b>Guess the Font</b><span>A font every day, guess what it is.</span></span></a></li> <li><a href="/fake-deadline/"><span class="more-emoji" aria-hidden="true">⏰</span><span class="more-text"><b>Fake Deadline Generator</b><span>Give it your real deadline and it issues you an earlier one — as an official-looking notice, with a reason convincing enough that you might actually obey it.</span></span></a></li> <li><a href="/candy-trade/"><span class="more-emoji" aria-hidden="true">🍬</span><span class="more-text"><b>Halloween Candy Swap Checker</b><span>Pick what each kid is swapping and find out if it's fair — and if it isn't, exactly which candy would even it up.</span></span></a></li> </ul> </nav> <style> .more-tools{margin:3rem 0 0;padding-top:1.25rem; border-top:1px solid color-mix(in srgb,currentColor 22%,transparent)} .more-tools h2{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase; opacity:.65;margin:0 0 .75rem;font-weight:600} .more-tools ul{list-style:none;margin:0;padding:0;display:grid;gap:.4rem} .more-tools a{display:flex;gap:.55rem;align-items:baseline;text-decoration:none; color:inherit;padding:.55rem .65rem; background:color-mix(in srgb,currentColor 5%,transparent)} .more-tools a:hover,.more-tools a:focus-visible{ background:color-mix(in srgb,currentColor 13%,transparent)} .more-tools .more-text{display:block} .more-tools b{font-weight:600} .more-tools b::after{content:" — "} .more-tools .more-text>span{opacity:.72} @media (min-width:38rem){ .more-tools ul{grid-template-columns:repeat(3,1fr)} .more-tools a{flex-direction:column;gap:.3rem} .more-tools b::after{content:""} .more-tools b{display:block;margin-bottom:.15rem} } </style>