Skip to content
KeeperQR
← All guides

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.

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.

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

CausePreventionIn KeeperQR
Service deactivates codes after a trialGet the trial-end behaviour in writing before printingDoes not happen. Codes keep redirecting
Service pauses codes over a free-tier capCheck code and scan limits, and what gets pausedDoes not happen. No code or scan limits
Service shows an upgrade page after cancellingCheck what scanners see after cancellationDoes not happen. Scans go to your destination
Service closes or is blockedPut codes on a domain you ownCan happen to any service. Use your own domain to stay safe
Dead destinationStable URLs, plus automatic destination checksDestinations checked daily
Paused or scheduledReview end dates and status before blaming the serviceSettings you control in Studio
Print problemsSize for distance, keep the quiet zone, test a real proofNew 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.

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