Why QR codes stop working (and how to avoid it)
Paolo Matias Tonello8 min read
A QR code that stops scanning almost never has a broken pattern; it has a broken destination, a broken print job, or a broken redirect domain, and each of those has a distinct symptom, check and fix.
The destination URL died
Symptom: the code scans and opens a browser, but the page shows a 404, an expired campaign banner, or a "file not found" for a deleted PDF. Check: open the exact URL the code encodes (decode it with any QR reader app) in a normal browser and confirm the page still exists.
Fix: if it's a static code, you must reprint with a corrected URL — there is no other option. If it's a dynamic code, edit the destination in your dashboard; the printed artwork stays valid because the code itself only points at a short redirect link, not at the page directly.
The free generator's redirect domain expired
This is the single biggest real-world cause of QR codes that "stop working" months or years after printing. Many free tools quietly generate a dynamic code even when the user only wanted a simple static one — the printed pattern encodes a short link on the generator's own redirect domain, not your final URL.
If that provider shuts down, changes ownership, or moves the free tier behind a paywall, the redirect domain can stop resolving or start showing an upsell page instead of your content — and every code you ever printed with that tool breaks at once, with no way for you to fix it because you don't control the domain.
Symptom: a code that worked for a long time suddenly redirects to an error, a paywall, or an unrelated site. Check: decode the code and look at the domain in the URL — if it's the generator's brand name rather than your own domain or a service you trust and control, that's the risk. Fix: regenerate the code through a provider whose redirect domain you can rely on for the long term, and prefer a static code for anything that truly never needs to change.
Print and surface defects
Symptom: the code scans inconsistently or not at all depending on the phone or the angle. Several distinct causes produce this same symptom, so check them in order.
- Printed too small for its data length — long URLs need more modules and a larger minimum print size
- Quiet zone cropped by trim, bleed or a fold line running through the margin
- Low contrast, inverted colours, or the code printed directly over busy artwork
- A logo overlay too large for the error-correction level in use
- A damaged, scratched, wet, curved or wrinkled surface distorting the pattern
- Glare from lamination, glass or a screen reflection when the code is shown on a display
Check each with a plain phone camera at the intended scan distance and lighting, not just a close-up desk test. Fix: increase print size, restore the quiet zone margin, raise error correction before adding a logo, laminate matte instead of gloss, and re-test after any material or printer change.
Scanning angle and distance
Symptom: the code scans up close but not from where people actually stand — a poster across a room, a billboard, a table tent read at arm's length. Check: scan from the real expected distance and angle, not from six inches above the page.
Fix: increase the physical size relative to scan distance (a common rule of thumb is roughly a tenth of the intended distance), and avoid extreme off-axis placement such as low on a vertical surface people pass quickly.
HTTP vs HTTPS and certificate problems
Symptom: the phone's browser shows a security warning, a "not private" interstitial, or blocks the page outright. Check: open the destination URL directly and look for browser warnings about mixed content (a secure page loading insecure resources) or an expired TLS certificate.
Fix: serve the destination over HTTPS with a valid, current certificate, and make sure every resource on the page also loads over HTTPS. This is a server-side fix, unrelated to the QR code pattern itself.
Shortener domains and reputation filters
Symptom: some phones show a safe-browsing warning before opening the link, or a security app blocks it outright, while others open it fine. Check: run the destination domain through a public safe-browsing or URL-reputation checker.
Fix: some generic shortener domains accumulate a poor reputation because they've been reused for spam by other customers of the same service — a risk you don't control. Using a redirect domain tied to a reputable QR platform reduces this exposure.
Redirect chains and app-only links
Symptom: the scan takes a long time to resolve, drops UTM campaign parameters along the way, or opens an app installation prompt with no fallback for people who don't have the app. Check: trace the redirect chain (most browser dev tools or online redirect checkers show every hop) and confirm parameters survive to the final URL.
Fix: minimise redirect hops — ideally one, from the QR code's short link straight to the final page — and always provide a web fallback alongside any app deep link, since a QR code may be scanned by someone without the app installed.
Geo-restricted or blocked destinations
Symptom: the code works for you but not for scanners in another country or on another network. Check: test from a mobile connection outside your office network, and check whether the destination server or CDN applies geo-blocking.
Fix: if the audience is international, either remove unnecessary geo-restrictions or route different regions to region-appropriate pages via the dynamic redirect rather than a single hard-coded URL.
The misconception that codes "expire"
The printed black-and-white pattern never expires — it's just pixels, and pixels don't have a service contract. What can stop working is the thing behind it: a page taken offline, a redirect domain that lapses, or a hosting account that closes. When someone says a QR code "expired," they mean the destination or the redirect service did, not the code itself.
| Symptom | Likely cause | Fix |
|---|---|---|
| Opens to a 404 or missing file | Destination URL died | Edit dynamic destination, or reprint if static |
| Worked for months, now shows an error or paywall | Free generator's redirect domain expired | Move to a redirect domain you control long-term |
| Scans up close, fails from a distance | Printed too small for data length or scan distance | Increase print size, shorten the encoded URL |
| Fails only near the edge of the artwork | Quiet zone cropped by trim, bleed or fold | Restore margin, adjust die-cut layout |
| Inconsistent scans depending on phone | Low contrast, glare, or damaged surface | Improve contrast, matte laminate, replace damaged copies |
| Browser shows a security warning | HTTP/mixed content or expired TLS certificate | Serve HTTPS everywhere with a valid certificate |
| Some phones block it before opening | Shortener domain flagged by reputation filters | Use a reputable platform's redirect domain |
| Opens an app store prompt with no way to continue | App-only deep link, no web fallback | Add a web fallback alongside the deep link |
How to avoid this going forward
Choose static codes for content that genuinely never changes, like a fixed WiFi password. Choose dynamic codes, on a redirect domain you trust to stay operational, for anything tied to a campaign, a menu, or a page that might move — and check the destination periodically the same way you'd check a link on your own website.
FAQ
Why did my QR code suddenly stop working?
In almost every case the pattern is fine and the destination failed: a deleted page, an expired redirect domain from a free generator, or a certificate problem on the destination site. Decode the code and open the URL in a browser to see which.
Can a QR code expire?
The printed pattern never expires. What expires is the destination or the redirect service behind a dynamic code, so choose a provider whose redirect domain you can rely on long-term.
How do I fix a printed QR code without reprinting?
Only if it is dynamic. A dynamic code encodes a short redirect link, so you edit the destination in the dashboard and every printed copy follows. A static code has to be reprinted.
Why does my QR code work on my phone but not on others?
That pattern points at marginal scanning conditions rather than a broken code: low contrast, glare from lamination, a code too small for the read distance, or a safe-browsing filter blocking the destination on some devices.
Put it into practice
Keep reading
- Static vs dynamic QR codes: the definitive guideThe difference isn't a marketing tier, it's a difference in what is physically encoded in the pixels — and it decides whether you can ever change the destination.
- QR code error correction and minimum print sizeHow much damage a QR code can survive is a number you choose at generation time, and it directly decides the smallest size you can safely print it.
- Do QR codes expire? How long a QR code really lastsA static QR code lasts forever because the data is inside the image. A dynamic QR code lasts as long as the service behind the short link stays online.