Do QR codes expire?
No. A QR code is a printed pattern, and patterns don't have expiry dates. What expires is the service the code points to — and that distinction is the difference between a code that works in ten years and one that dies next quarter.
If a QR code you made has stopped working, one of five things happened. None of them is the code aging.
What actually breaks a QR code
1. The QR platform put your code behind a subscription
This is the most common cause, and it's worth being blunt about: many QR generators create a code that redirects through their own domain, then stop honouring that redirect when you stop paying. The code is fine. The pattern is fine. The company decided to switch it off.
Free-tier codes on paid platforms are often time-limited by design — 14 days, 30 days, or "unlimited scans for your trial period". Read what you're agreeing to before you print 10,000 units.
2. The service shut down entirely
Not hypothetical. Google's URL shortener (goo.gl) and Firebase Dynamic Links both stopped serving links in August 2025. Every QR code and every short link built on them broke at once, worldwide. Before that, bit.do, tr.imand a long list of others did the same.
If your printed code encodes someone else's domain, your artwork depends on that company's business decisions for as long as the print run exists.
3. The destination page moved or was deleted
If the code encodes the final URL directly — example.com/spring-2026-promo — and that page is deleted, the code leads to a 404. The code still scans perfectly. There's just nothing at the other end.
4. The short link was created anonymously and got cleaned up
Most link services delete unclaimed anonymous links after a period to control abuse. Ours are removed after 30 days unless you claim them with a free account. That's a deliberate anti-abuse measure, not a paywall — a claimed link stays live indefinitely.
5. The code was physically damaged
Scuffing, fading, moisture, or being printed too small. Not expiry, but it looks identical from the user's side. See QR codes on packaging for the print-durability details.
Static vs dynamic: which one can't break
Static | Dynamic | |
|---|---|---|
What's encoded | Your final URL | A short link you control |
If the destination moves | Broken forever | Repoint the link, code keeps working |
If the platform shuts down | Unaffected — it's your own URL | Broken, unless you own the domain |
Scan tracking | None | Every scan counted |
There's a real trade-off here that most articles skip:
A static code can't be killed by a vendor, because no vendor is involved — but it also can't be fixed if the destination changes.
A dynamic code can always be repointed — but it depends on the redirect service staying alive.
The way to get both is to use a dynamic code on a domain you own. Then the destination is editable and nobody else can switch it off. If you're printing anything with a long shelf life, that's the configuration to insist on.
More on how dynamic codes work →
How to tell whether your code will expire
Scan it and look at what URL opens:
A short domain you don't recognise (
bit.ly/…,qrco.de/…,scnv.io/…) → dynamic, on someone else's domain. Its life depends on that company and your subscription with them.Your own short domain (
go.yourbrand.com/…) → dynamic and durable. Best case.Your full destination URL → static. It can't be switched off, but it also can't be changed.
If you can't scan it, a QR decoder will show you the encoded value.
Making a QR code that won't expire
Encode a short link, not the final URL — so you can repoint it later.
Use a platform that doesn't gate redirects behind a subscription. Ask directly: what happens to my printed codes if I stop paying? If the answer is "they stop working", walk away for anything printed.
Use your own domain if the code is going on packaging, signage, or anything with a multi-year life.
Claim your links — don't leave anonymous links unregistered.
Test before the plates are made, not after.
You can generate one free with no account. Codes are permanent; claim the link with a free account and the redirect stays live indefinitely.