How we test
Most promo-code sites publish lists. This one publishes test results. The difference shows up on the bad nights, which is the only time it matters.
The nightly run
Every night, for every brand on the site, we build a basket at the shop's own checkout and apply each code we hold for it. The basket is a representative item for that brand — the median-priced thing they actually sell, once gift cards, samples and warranties are excluded. The run never reaches a delivery address: the discount is read back from the shop's own cart, which is where the code either moves the total or does not. That also keeps delivery surcharges out of the figure entirely, rather than us having to pick a postcode that avoids them.
Every saving on this site is printed next to the basket it came off, and that pairing is the point. A discount code is not a single number: plenty of them need a minimum spend, or only apply to certain products, so "£14.20 off" is not a fact a reader can act on and "£14.20 off a £71 basket" is. We used to test the very cheapest thing in the shop, which made every published saving safe by construction — if it worked on a 98p accessory it worked on anything. It also meant that on most shops nothing ever worked, and a site that only ever reports failure is not much use either. So we test something representative and show you the basket, rather than testing something trivial and showing you a number that flattered us. If a code's saving has no basket recorded against it, we print no figure at all.
UK displayed prices include VAT, so the number we record is the number that comes off the total you would pay. A shop that prices us in another currency — Shopify decides that by where the request came from, not by the brand's country — has the whole night discarded rather than converted, because a euro figure behind a pound sign is a made-up number.
We record what happened: the amount, the percentage, and anything the code refused to stack with. We do not record a minimum spend. A code that works on our basket proves only that no minimum above that basket applies — which is not the same as there being none. So the minimum spend column says "not measured" rather than guessing, and a code that fails is reported as exactly that: from where we stand, a live code with a minimum spend above our basket, a code restricted to products we did not buy, and an expired code all look identical, and we will not guess which one you are looking at.
The 48-hour rule
A code is only shown as working if it passed a checkout test in the last 48 hours. Not if it worked last week, not if the brand's own site still advertises it, not if a network feed still lists it. If the test has not run, or ran and did not pass, the code moves out of the working table and the page says which of those happened.
Codes that stop working
Dead codes are struck through and kept, with the date each last worked. We do not delete them. A code disappearing from a page is indistinguishable from a code that was never there, and if you saw one working here on Tuesday you are owed the retirement notice on Thursday.
When the test itself fails
Sometimes the run cannot reach a verdict: the shop's bot defences turn us away, or the request errors out. That is our failure, not the brand's, and we never record it as a failed code. Such a code is shown as untested with the reason, because striking a working code through as dead would be a false claim about a merchant — the opposite mistake to the one everyone worries about, and a more damaging one.
We stop testing a brand for the night after two blocks, and we run at most one checkout session per shop per night, in a randomised slot. These are small brands; a robot hammering their checkout is both rude and self-defeating, because a shop that blocks us is a shop we can never publish about.
How brands get here
We look for UK direct-to-consumer brands early, usually before they have an affiliate programme at all — certificate-transparency logs and public ad libraries show a shop is real and trading before any network has heard of it. A shop needs at least 10 published products before we will build a page for it. Candidate codes come from the brand's own banners and signup emails, from network feeds where one exists, and from at most 8 guesses at the shop's public discount URL — the same link brands put in their own welcome emails. Nothing here bypasses anything.
How we are paid, and what it does not buy
Some pages earn a commission when you buy through them, some are monetised automatically, and some earn nothing at all — a brand with no affiliate programme still gets a page, tested the same way. What the money never buys is the result: the test is run and reported identically whether the brand pays us, and codes fail on pages we earn from every night. We do not auto-apply codes, we do not send you through a redirect you did not ask for, and we never show a different page to a search engine than to you.
Getting it wrong
We will. A shop can change its rules between our test and your basket, and a code that passed at 03:00 can be pulled by breakfast. Every figure on this site carries the timestamp it was measured at, so you can see how old it is before you trust it. Nothing is estimated, nothing is carried over from another brand, and no number on this site was written by hand.