Troubleshooting

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.

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.

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.

Common symptoms and fixes
SymptomLikely causeFix
Opens to a 404 or missing fileDestination URL diedEdit dynamic destination, or reprint if static
Worked for months, now shows an error or paywallFree generator's redirect domain expiredMove to a redirect domain you control long-term
Scans up close, fails from a distancePrinted too small for data length or scan distanceIncrease print size, shorten the encoded URL
Fails only near the edge of the artworkQuiet zone cropped by trim, bleed or foldRestore margin, adjust die-cut layout
Inconsistent scans depending on phoneLow contrast, glare, or damaged surfaceImprove contrast, matte laminate, replace damaged copies
Browser shows a security warningHTTP/mixed content or expired TLS certificateServe HTTPS everywhere with a valid certificate
Some phones block it before openingShortener domain flagged by reputation filtersUse a reputable platform's redirect domain
Opens an app store prompt with no way to continueApp-only deep link, no web fallbackAdd 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.

Author

Paolo Matias TonelloFounder, Qreator

Founder of MT Digital Services LLC and builder of Qreator. Writes about QR codes, print production and privacy-friendly analytics.

Put it into practice