Why your QR code stopped working: 7 causes, most likely first
Work through these in order. The first three account for most cases, and you can check all of them in about five minutes.
Something that used to scan now does not. Before reprinting anything, work down this list — it is ordered by how often each cause turns out to be the answer.
1. The subscription behind it lapsed
If it is a dynamic code, this is the most likely explanation by a wide margin, and the clearest symptom is that the code scans fine but lands somewhere unexpected: a subscribe page, an upgrade prompt, an error, or a parking page.
How to check: scan it and read the URL that appears before the page loads. If it is a short domain belonging to a QR platform, log into that platform and check the account status.
What to do: reactivating usually restores it. Before you pay, find out in writing what the policy is, so you are not doing this again next year. If the platform will not commit, repoint the code somewhere you control as soon as it is live again.
2. The destination moved or died
The code works perfectly and the page it points to is gone — a redesigned website with different URLs, a deleted PDF, an expired event page, a social profile that was renamed.
How to check: read the decoded URL and open it in a browser. If you get a 404, the code is fine and the website is the problem.
What to do: if the code is dynamic, repoint it — two minutes, no reprinting. If it is static, you must either restore the old URL (a redirect on your own site is the cheapest fix by far) or reprint.
3. Print quality, size or contrast
If it scans on some phones and not others, or works at arm's length but not across a room, this is a physical problem rather than a digital one.
Check, in this order:
- Size. The usual guidance is that a code should be about one tenth of the distance it is scanned from. A code read from two metres wants roughly 20cm.
- The quiet zone. The specification requires four modules of blank margin. Designers crop it constantly. Without it, scanners struggle to find the code against a busy background.
- Contrast. Dark code on light background. Inverted codes (light on dark) fail on many scanners, and low-contrast colour pairs fail in poor light.
- Surface. Gloss lamination, curved bottles and crumpled paper all reduce the read rate.
4. A logo that covers too much
Logos work because QR codes carry error correction. They stop working when the logo exceeds what that correction can recover. The highest level recovers about 30% of the code, and that is a ceiling, not a target — damage, glare and angle eat into the same budget.
What to do: keep a logo at or below roughly 30% of the code's width, and make sure the code was generated at the highest error correction level when a logo is present. If it was generated at a lower level and then had a logo dropped on top in a design tool, it may have been marginal from the day it was printed.
5. The design broke the structure
Styled codes — rounded dots, circular corners, gradients — can be made to work well. They break when the styling is applied to the parts of the code a scanner uses to orient itself: the three large corner squares, the smaller alignment squares, and the dotted lines connecting the corners. Those must stay square.
We found this the hard way while building our own renderer: styling the alignment and timing patterns made every dotted-style code fail to decode, even though it looked perfect. If your codes came from a tool that styles everything uniformly, that may be your answer.
6. The scanner, not the code
Older phones, some in-app browsers, and heavily locked-down work devices behave differently. A code that fails in one app and works in the native camera is a scanner issue.
How to check: try at least two devices and the native camera app on each.
7. The code was deleted or the account closed
If a dynamic code was deleted, or the account that owned it was closed, it will generally stop resolving no matter what the billing status is. Reputable platforms retire that address permanently rather than reissuing it — if an address could be handed to another customer, your printed material would start sending people to a stranger's website, which is worse than a dead link.
Preventing the next one
- Keep a record of what every printed code points at, and where it was deployed.
- Export static fallbacks if your platform offers them.
- For static codes, point them at a URL on a domain you own and control the redirect yourself, so moving the destination never requires a reprint.
- Test every code on at least two phones before the print run, not after.
That last one is worth a checklist of its own: how to test a QR code before printing it.
Related questions
My code scans but goes to the wrong page.
Either the destination was edited, or a targeting rule (by country, device or date) is matching. Check both in whatever platform owns the code. On ours, edits take effect on the next scan because we send no-cache headers on every redirect.
Can I fix a static code without reprinting?
Only if you control the destination URL. If it points at your own domain, add a redirect there. If it points at a third-party URL you do not control, reprinting is the only option — which is the argument for always pointing static codes at your own domain.
Related reading
Do QR codes expire? The honest answer
QR codes do not expire. The services behind some of them do. Here is the difference, and how to tell which kind you are holding.
Static vs dynamic QR codes: which one to print
The real trade-off between static and dynamic QR codes, with a decision rule and the cases where each one is clearly right.
How to test a QR code before you print 500 of them
A pre-print checklist for QR codes: the eight checks that catch almost every failure, and the one test nearly everyone skips.