Why QR codes stop working
A QR code on a printed poster cannot be patched. Here is what actually breaks them — and what to check before anything goes to print.
A QR code is not a link. It is a picture of one. Once it is printed on a menu, a business card or a shop window, nothing about it can be edited — and yet codes that scanned perfectly in the design file routinely stop working weeks or months later. Almost always it is one of six things.
1. The link inside it was never yours
This is the most common cause, and the least obvious, because the code looked fine when you tested it.
Many QR code generators — especially the ones offering "dynamic" codes, scan analytics or the ability to change the destination later — do not encode your address at all. They encode a short URL on their domain, which redirects to you. The redirect is what makes those features possible: they see every scan, and they can repoint the link.
It also means your printed code depends on a company you do not control staying in business, keeping that domain, and keeping your account in good standing. When the trial ends, the plan lapses, the free tier is retired or the service is sold, the redirect goes with it. The pattern on the paper is unchanged and perfectly scannable — it just leads somewhere that no longer exists.
How to check: scan your own code with any reader that shows the raw contents before opening it. If what appears is not the address you typed, your code depends on a third party.
A code that encodes your address directly cannot fail this way. There is nothing between the scanner and your page to expire — which is exactly how Sharen builds them. The trade-off is real and worth understanding: see static vs dynamic QR codes.
2. The page it points at moved
The mirror image of the first problem, and the one people forget when they choose direct encoding. If you encode example.com/summer-menu and later restructure the site, the code is now a printed link to a 404.
The fix is to think about the destination before you generate, not after:
- Point at a stable address on your own domain — a homepage, a permanent landing page, or a short path you deliberately keep forever.
- If the destination genuinely has to change (a seasonal campaign, a rotating offer), encode a URL you control and change what it serves on your side. You keep the flexibility without handing the link to anyone else.
- Avoid encoding URLs with session ids, tracking parameters or anything that looks temporary.
3. Too much data crammed into the code
The more characters you encode, the more modules the code needs, and the smaller each one becomes at the same printed size. A long URL with campaign parameters, or a full vCard with an address and three phone numbers, produces a dense grid that phones struggle with in poor light or at an angle.
- Shorten the URL before encoding it — drop tracking parameters that only matter for the web.
- For contacts, encode the fields people actually need: name, phone, e-mail, company.
- If the preview looks like grey noise rather than a pattern, that is the warning sign.
4. The logo ate the error correction
QR codes carry redundant data, so a portion of the pattern can be missing and the code still reads. That is why a logo in the centre works at all — it is covering modules that error correction can reconstruct.
The budget is not unlimited. At the highest error-correction level roughly 30% of the code can be lost, but that allowance also has to absorb print imperfections, glare, scratches and a phone camera focusing badly. A logo that covers a fifth of the code may scan fine on screen and fail on a scuffed printed card.
Keep the logo well under the theoretical maximum, keep it centred — the corners hold the finder patterns and must stay untouched — and test the printed result, not just the preview. There is more detail in adding a logo without breaking the code.
5. Not enough contrast
Scanners look for dark modules on a light background. Coloured and gradient codes are fine as long as that relationship holds — a deep purple on white reads as well as black on white. What fails:
- Light modules on a dark background (an inverted code). Some readers handle it, many do not.
- Mid-tone on mid-tone — a pastel code on a beige card.
- A code printed over a photo or a busy pattern.
- Glossy lamination under a ceiling light, which turns the whole code into a reflection.
Test in the conditions the code will actually live in: a table tent gets read at arm's length in dim restaurant light, not on a calibrated monitor.
6. No quiet zone, or printed too small
A QR code needs an empty margin around it — the quiet zone, conventionally four modules wide — for a scanner to find its edges. Designers trim it constantly, because the code looks better tucked tight against a border or an image. A code with no margin can become unreadable even though the pattern itself is perfect.
Size matters just as much. A rough rule for print: the code should be at least a tenth of the distance it will be scanned from. A code read from two metres away wants to be about 20 cm across. On a business card held at 30 cm, 2–3 cm is enough.
A checklist before you print
- Scan the final artwork with a reader that shows the raw contents — confirm your own address is what is encoded.
- Print a test at the real size, on the real material, and scan it in the real lighting.
- Try it with two or three different phones, including an older one.
- Check the margin around the code is intact.
- Make sure the destination page works on a phone, and that it will still exist next year.
None of this needs special software. It needs a code whose contents you can vouch for, and five minutes with a printed proof.
Sharen checks for all of this automatically before you export — the contrast and margin rules above, plus a real scan test using your device's own recognition engine. You'll know if a code will scan before it goes anywhere near a printer.
Questions people ask before printing
How long does a QR code last?
The pattern itself does not expire — it is just ink. What expires is whatever the pattern points at: a tracking link from a generator that has stopped paying for the domain, or your own page after a site restructure. A code encoding a stable address you control lasts as long as that address does.
Can a QR code be hacked or changed after printing?
The printed pattern cannot be altered, but if it encodes a third party's redirect, whoever controls that redirect controls where the scan lands. That is a good reason to know what is actually inside your code.
Make a code that outlives the print run
Sharen encodes your link directly, styles it however you like, and never puts anything of its own in between.