Why QR codes stop working, and how to prevent it
Updated
The real reasons a printed QR code stops working, from ended trials and dead links to damage and poor contrast, and how to avoid each one.
A QR code does not wear out on a schedule. The black and white pattern is a piece of text, and it will scan in twenty years if the print survives. When a code "stops working", something around it changed: the service behind it, the page it points to, or the physical print.
The fix depends on which of those it is, so the first step is telling them apart.
A note before you read on: three of the causes below are policies some QR services apply to the codes their customers made. KeeperQR applies none of them, and each section says what KeeperQR does instead. Where a cause can affect any dynamic code, KeeperQR's included, the article says that too.
First, find out which kind of failure it is
Scan the code with your phone camera and watch what happens.
- The camera does not recognise a code at all. The problem is physical: size, contrast, damage, or the print itself. See the section on print problems below.
- The camera shows a link, but the page is an error, an upgrade prompt, or a notice that the code is inactive. The problem is the service behind a dynamic code.
- The page opens, but it is a 404 or the wrong page. The redirect works, and the destination is the problem.
Most phone cameras show the link before opening it. That link tells you whether the code is static, with your own website's address in it, or dynamic, with a QR service's short domain in it.
Problems caused by a QR service's policies
A dynamic code holds a short link to a QR service, which redirects each scan to your page. If the service stops redirecting, every printed copy stops working at once, even though nothing on the paper changed. When a code made with another dynamic QR tool stops working, it is usually one of these.
Some services deactivate codes when the trial ends
Many QR services let you create dynamic codes during a free trial, then deactivate them when the trial ends. The codes still scan, but they lead to an error or a notice instead of your page. People often discover this after printing, when the trial has quietly run out.
How to avoid it: before you print anything from a trial, find the service's written answer to "what happens to my codes when the trial ends?" If it is not written down, assume the codes stop.
With KeeperQR: codes made during the trial keep redirecting after it ends, and scans keep being recorded. The only thing that stops is creating new codes and campaigns until you subscribe.
Some services pause codes over a free-tier cap
Some free plans allow a small number of dynamic codes, or a monthly scan allowance. Go over it and some codes get paused, sometimes the older ones, sometimes the most scanned ones.
How to avoid it: check the limits on codes and scans before you rely on a free plan for print, and check which codes get paused when you exceed them.
With KeeperQR: there is no free tier and no cap. The plan has no limit on codes or scans, so nothing gets paused for being popular.
Some services redirect scans to an upgrade page after cancelling
When a paid plan ends, some services keep the code "active" but send scans to an upgrade or sales page instead of your destination. Some put an ad page in front. The code appears to work, which makes this harder to notice than an error.
How to avoid it: read what the service does on cancellation as well as on trial end. They are often different answers.
With KeeperQR: after you cancel, scans still go straight to your destination. There is no upgrade page and no ads in front of your code, because the code that resolves a scan never checks your plan.
Any service can shut down or get blocked
This one applies to every dynamic QR service, KeeperQR included. A code on a service's domain depends on that service answering the link. If the company closes, or its domain gets flagged by browsers for hosting abusive links, every code on that domain breaks.
How to avoid it: use a service that lets you put codes on a domain you own. The printed link then reads as your address, and if you ever leave the service you can point the domain elsewhere and keep every printed code.
With KeeperQR: codes can use a domain you own. KeeperQR also disables codes used for abuse, which lowers the risk of its shared domain being blocked for everyone else. The FAQ sets out what KeeperQR commits to if it ever winds down.
Problems with the destination
These can happen with any dynamic code, whichever service made it, and the destination one can happen to a static code too.
The page behind the code is gone
The redirect can be working perfectly and still send people to a 404. Websites get rebuilt, campaign pages get deleted, and links change when someone renames a page. This one is on the site owner, and a static code is exposed to it just as much.
How to avoid it: keep pages that printed codes point to at a stable address. With a dynamic code you can change the destination when a page moves. Better still, use a service that checks your destinations and tells you when one breaks, so you hear about it before a customer does. KeeperQR checks every active code's destination daily.
The code was paused, scheduled, or protected
Dynamic codes can have an end date, a start date, a pause switch, or a password, and KeeperQR codes have all four. These are settings you or your team control, not something the service does to you. Still, a code whose end date passed, or one that someone in your team paused, looks broken to the person scanning.
How to avoid it: check the code's settings before assuming the worst, and be careful with end dates on anything printed to last.
Problems with the print
These affect static and dynamic codes equally. The print size guide covers each in more detail.
- Too small for the distance. A rule of thumb is a code at least one tenth as wide as the scanning distance.
- The blank border was cropped. A QR code needs a quiet zone four modules wide on each side, and layouts often squeeze it out.
- Low contrast. Pale colors, a dark background behind a light code, or a photo behind the pattern.
- Damage. Scratches, fading, folds, stickers over part of the code, or a curved surface. Error correction recovers some damage, not all of it.
- Glare. Glossy laminate, or a window in direct sun.
- A blurry file. A small image scaled up for print. Use a vector file such as SVG.
How to avoid it: print a proof at the final size and scan it in the real location before the full run. The test before you print checklist walks through it.
A short prevention checklist
| Cause | Prevention | In KeeperQR |
|---|---|---|
| Service deactivates codes after a trial | Get the trial-end behaviour in writing before printing | Does not happen. Codes keep redirecting |
| Service pauses codes over a free-tier cap | Check code and scan limits, and what gets paused | Does not happen. No code or scan limits |
| Service shows an upgrade page after cancelling | Check what scanners see after cancellation | Does not happen. Scans go to your destination |
| Service closes or is blocked | Put codes on a domain you own | Can happen to any service. Use your own domain to stay safe |
| Dead destination | Stable URLs, plus automatic destination checks | Destinations checked daily |
| Paused or scheduled | Review end dates and status before blaming the service | Settings you control in Studio |
| Print problems | Size for distance, keep the quiet zone, test a real proof | New codes export with the quiet zone included |
If you do not need scan counts or the ability to change the link, a static code avoids the service risks completely. The free generator makes one with no account. See static vs dynamic QR codes for the trade-offs.
How KeeperQR handles this
KeeperQR is built so the service-policy problems above do not happen to your codes.
- Codes keep redirecting when a trial ends or a subscription is cancelled. Scans are still recorded, with no upgrade page or ads in front. What stops is creating new codes and campaigns. The code that resolves a scan does not read your plan at all.
- No free-tier cap. There is no limit on codes or scans, so no code is paused for going over one.
- Codes can use a domain you own, so the printed link is yours.
- Destinations are checked every day, and the workspace owner can get an email when one breaks.
The one exception is abuse. Codes used for phishing, malware, or anything else the acceptable use policy prohibits get disabled. The FAQ covers that, and what happens if KeeperQR ever shuts down.
Codes that keep working after you stop paying
Dynamic QR codes with real scan analytics. 14 days free, no card.
Start your free trial