Work out which half broke before you reprint anything — the pattern and the destination fail in completely different ways.
A QR code has two parts that fail in unrelated ways: the printed pattern, and the place it points to. Before changing anything, scan it with your own phone from about 20 centimetres away in good light.
If the phone does not recognise anything at all, the pattern is the problem — size, contrast, damage or a cropped margin. If it recognises the code instantly but the page will not load, the pattern is perfect and the destination is the problem. That one test regularly saves people from reprinting something that never needed reprinting.
If it scans on your phone but not on a customer's, it is usually size or contrast. You are testing under better conditions than they are — closer, brighter, newer camera.
By far the most frequent reason a code that worked for months stops overnight is that it was a dynamic code on a trial or a lapsed subscription. A dynamic code does not contain your web address. It contains an address on the provider's domain, which redirects to yours. When the trial ends or the card on file fails, the provider stops redirecting — and every code you printed breaks at the same moment.
You can usually recognise this from the destination: if scanning shows a short link on a domain you do not own, the code was never entirely yours. Nothing about the printed pattern is damaged, and reprinting the same artwork will not help, because the redirect is what disappeared.
The fix is to reprint with a static code that carries your address directly, with no third party in the middle. That is what this generator makes, and it is the reason a code from here cannot be switched off by anyone, including us.
The second most common cause is simpler and entirely in your own hands: the page no longer exists. A menu PDF was re-uploaded under a new filename, a site was rebuilt with different URLs, a booking system was replaced, or a certificate expired and the browser now shows a warning instead of the page.
Nothing about the code changed. Open the address in a browser and you will know within seconds. If the page merely moved, the cheapest fix is almost always a redirect from the old address rather than a reprint.
Point printed codes at an address you control and can redirect later — a page on your own domain, not a link produced by whatever tool you happened to use that month.
A QR code needs a clear margin of four modules on all four sides. Scanners use that blank border to find where the code begins and ends. Designers trim it constantly, because in a tight layout it looks like wasted space.
This produces the most confusing failure of the lot: the code works in the design file and on the proof, then fails on the finished piece where it sits flush against a coloured panel, a fold or the edge of the paper. If your code recently moved into a new layout and stopped scanning, check the margin before anything else.
Scanners need dark modules on a light background with real contrast between them. Codes designed in brand colours often sit close to the edge of what works, then get printed on coloured stock or reversed to light-on-dark by someone tidying up a layout, and fall over that edge.
Light-on-dark codes do decode on many modern phones, but not on all of them and not reliably in poor light. If a code fails on some phones and works on others, contrast is the first suspect.
The working rule is that scan distance is roughly ten times the width of the code. A 2 cm code is built to be read from about 20 cm, which is fine on a business card and useless on a wall two metres away. Artwork gets reused across materials without resizing, and a code that was correct on a flyer becomes unreadable when the same file is scaled onto a window sticker or a vehicle.
Below about 1.5 cm, printing tolerances start to matter more than anything you control in the design, and results become unpredictable from phone to phone.
If the code is the right size, the contrast is good and the margin is intact, what is left is the physical object it was printed on. This category causes more failures than it gets blamed for, because the damage accumulates slowly enough that nobody notices a day it stopped working.
Error correction hides a surprising amount of this. A code at high error correction can lose up to about 30 percent of its area and still decode, which is why physical damage produces intermittent failures rather than clean ones — and why intermittent failure is a signal to reprint, not to keep testing.
Worth stating plainly, because the opposite is widely assumed. A static QR code holds your data inside the pattern. No server is involved once it is printed, no account is attached to it, and there is nothing anyone can switch off. If it scanned on the day it was printed and the physical code is undamaged, it will scan in ten years.
So everything on this page is either something in the world that changed — the print, the surface, the destination — or a third party who was sitting in the middle and left.
Free, no sign-up, and your code never expires.
Got your code? ☕ Buy me a coffee — it keeps this tool free for everyone.