The most common reason a QR code stops working is an expired trial or subscription on a dynamic code. The printed image is fine; the redirect link inside it was switched off. Other causes: a dead destination URL, low contrast, printing too small, an oversized logo, a dead link shortener, print damage, a changed WiFi password, and scanner quirks.
This guide ranks all nine by likelihood, with a fix for each.
Is the code broken, or is the link inside it?
Start by decoding the code. Point your camera at it and read the preview, or use any scanner app that shows contents before opening them. What you see determines everything.
If the decoded text is your real destination — your menu URL, your network name, your phone number — the code is static. The image itself contains the data, and static codes never expire, from any generator. If a static code fails, the problem is the destination or the print.
If the decoded text is a short link you don't recognize, the code is dynamic. It points at a redirect owned by the generator. When that redirect dies, so does your code. The full distinction is covered in static vs dynamic QR codes.
The 9 causes, ranked by likelihood
Causes 1, 2, 6, and 8 break codes that used to work. Causes 3, 4, 5, and 7 break codes that never worked, or that scan inconsistently. Cause 9 is the scanner, not the code.
| # | Cause | Fix |
|---|---|---|
| 1 | Expired trial or plan on a dynamic code | Reactivate the plan, or reprint as static |
| 2 | Destination URL changed or deleted | Restore the page, or re-point the dynamic link |
| 3 | Low contrast or inverted colors | Dark code on a light background |
| 4 | Printed too small | 2 × 2 cm minimum; scan distance ÷ 10 for width |
| 5 | Logo covers too much | Keep the logo under 20% of the code area |
| 6 | Link shortener shut down | Regenerate with the full destination URL |
| 7 | Damaged or warped print | Reprint flat, keep the white quiet zone |
| 8 | WiFi password changed | Generate a new WiFi code |
| 9 | Scanner app quirks | Clean lens, more light, native camera |
Cause 1: an expired trial or subscription killed the redirect
This is the trap behind most "my QR code stopped working" searches. Dynamic codes route every scan through the generator's servers. Stop paying, and many providers turn the redirect off — after you've printed.
The published policies are blunt. Per their support docs, qr-code-generator.com deactivates dynamic codes made during its 14-day trial, then redirects scans to an upgrade page. Its Trustpilot rating sits around 1.4 of 5 across 9,200+ reviews. QR Tiger stops free dynamic codes after 500 scans each, and stops all dynamic codes if your plan lapses, per their own policy. QRFY pauses codes 7 days after creation unless you subscribe, per their pricing page.
The fix: sign in to whichever service made the code and check the plan status. If reviving the plan isn't worth it, reprint with a static code, or with a provider whose lapse policy you've actually read. Qranite's policy: if you stop paying, your dynamic codes keep redirecting forever. You lose editing and analytics, never the redirect.
Causes 2 and 3: dead destinations and bad contrast
Cause 2: the destination URL changed or was deleted. The code scans fine and lands on a 404. This is common after site redesigns, menu updates, and domain moves. Fix: restore the old URL, or add a redirect on your own site. It's also the one problem dynamic codes genuinely solve — re-point the link without reprinting anything.
Cause 3: low contrast or inverted colors. Scanners want dark modules on a light background. White-on-black reads unreliably across devices; gray-on-white barely reads at all. Fix: regenerate with a dark code on a light background, and test on two different phones before printing.
Causes 4 and 5: printed too small, or too much logo
Cause 4: printed too small. The floor is about 2 × 2 cm for arm's-length scanning. For distance, divide the scan distance by ten: a code read from 3 meters needs to be 30 cm wide. Business cards and table tents fail this rule constantly.
Cause 5: the logo covers too much. Error correction lets a code survive roughly 30% obstruction at its highest setting. A logo eating 40% of the middle leaves no margin for printing imperfections. Keep logos under 20% of the code area, centered.
Causes 6 and 7: dead shorteners and damaged prints
Cause 6: the link shortener died. A code that encodes a shortener link dies with the service. Google retired goo.gl links in 2025 and broke years of printed codes overnight. Fix: encode the full destination URL. The code gets slightly denser; you lose a dependency.
Cause 7: physical damage. Scratches, sun fading, glossy lamination glare, and curved surfaces all defeat scanners. So does cropping the white margin — a code needs a quiet zone of about four modules on every side. Fix: reprint with the margin intact, mount it flat, and use matte lamination.
Causes 8 and 9: changed WiFi passwords and picky scanners
Cause 8: the WiFi password changed. A WiFi QR code encodes the network name and password directly. Change the password and the code joins guests to nothing. Fix: generate a fresh code. It takes thirty seconds and costs nothing.
Cause 9: the scanner itself. Phones older than iOS 11 or Android 10 may need a separate scanner app. Dirty lenses, dim light, glare, and scanning from a low-brightness screen all cause misreads. Fix: clean the lens, add light, back up 10-20 cm, and raise the screen's brightness.
If you've ruled out all nine, regenerate. A free static code made in your browser has no server dependency and nothing left to fail.