The code itself cannot expire
A QR code is a pattern of black and white squares encoding a short piece of text. Printed on paper it has no connection to the internet, no account attached, and nothing to renew. A code printed in 2012 encodes exactly the same text today.
So when someone says their QR code expired, something else broke. There are three candidates, and only one of them is common.
1. The redirect was switched off
This is what actually happens, nearly every time.
Most generators do not encode your link. They encode their link — something likeqr-provider.com/a1b2c3 — which forwards visitors to your destination. That indirection is what lets a code be edited after printing, and it is genuinely useful.
It also means the code only works while that company keeps the redirect alive. When a trial ends, a subscription lapses, or the company changes its plans, the forward stops. Your code is intact. The thing it points at is gone.
This is why the question gets asked so often. The trap is that nothing warns you at printing time — the code works perfectly during the trial.
2. The destination itself disappeared
Even a static code fails if what it points at is gone. A deleted page, a lapsed domain, a moved file, a restructured site — the code still resolves correctly to an address that no longer serves anything.
The difference matters: this failure is yours to prevent, and preventable. Point codes at stable addresses you control and do not reorganise them.
3. The print physically degraded
Rarer, but real. QR codes rely on contrast, and error correction only covers so much damage — between roughly 7% and 30% depending on the level used.
- Sunlight fades ink until black is grey and scanners give up.
- Water and oil on unlaminated paper destroy contrast quickly.
- Abrasion on tables, floors and packaging wears the pattern away.
Lamination or UV-resistant ink handles all three.
How to check a code you already have
Thirty seconds, and worth doing before any print run:
- Open a scanner app that shows the content instead of immediately opening it. Most do — look for a preview of the URL.
- Scan your code and read the text it contains.
- If it is your own address, the code is static. It will work forever, as long as your page exists.
- If it is somebody else's domain, the code is dynamic. Whoever owns that domain controls whether it keeps working.
There is no middle case. Either your destination is inside the code or it is not, and you can see which in seconds.
What to do if yours is dynamic
The printed code cannot be converted — the redirect address is baked into the pattern. Your options are:
- Keep paying, if the analytics and editability are genuinely worth it to you.
- Generate a static replacement pointing at your real destination, and reprint when you next reprint anyway.
- Do nothing, and accept the code dies when the subscription does.
If reprinting is expensive — packaging, signage, printed menus — the calculation usually favours switching to static at the next print run and never thinking about it again.
The part worth remembering
"Does this code expire?" is really "does this code depend on anyone staying in business?" A static code depends on nothing but your own destination remaining online. A dynamic code depends on a company, a subscription, and that company's continued existence — for as long as the printed code exists in the world.
Both are legitimate choices. Only one of them is usually explained before you print a thousand of them.