Do QR codes expire?
A static QR code never expires. A dynamic one can stop working whenever the company behind it decides, or fails.
The short answer#
The pattern of black and white squares has no expiry date built into it. Nothing in the QR specification includes a timestamp, a licence or a kill switch. A code printed in 2012 decodes to exactly the same content today.
What can expire is whatever the code points at, and — for dynamic codes — the service that does the pointing.
Static codes: no#
A static code holds its content in the pattern itself. Scanning it reads the text straight off the paper with no lookup involved. There is no account to lapse and no server to shut down, so the code keeps working as long as the ink survives.
If it encodes a URL, the page can of course go offline — but that is your website expiring, not the code. If it encodes a Wi-Fi password or a contact card, there is no dependency at all, and it will keep working forever.
Dynamic codes: yes, easily#
A dynamic code encodes a short link owned by the generator company. Every scan goes to their server, which redirects onward. That link stops resolving if the free trial ends, the subscription lapses, the scan quota is exhausted, the company is acquired and migrates domains, or the business closes.
This is the real risk, and it is not theoretical. Businesses have had codes on printed packaging already sitting in shops when a provider changed its free tier. The artwork was fine; the redirect was gone.
How to tell which kind you have#
Scan it and look at what appears. If you see your actual destination — your full website address, your contact details, your network name — it is static and permanent. If you see a short link on a domain you do not recognise, it is dynamic and depends on that company.
Do this before you reprint anything, and before you rely on a code somebody else made for you.
If you already printed a dynamic code#
Keep the subscription current, and check the codes periodically rather than assuming. Where the printed run is small or nearly used up, replace it with a static code pointing at your own domain. Where the run is large, at minimum make sure the account is not tied to one person’s email address.
Making codes that will not expire#
Every code from this site is static. The content lives in the pattern, nothing routes through us, and there is nothing we could switch off even if we wanted to. If you need the ability to change a destination later, point a static code at a short path on your own domain and change what that page serves — you keep control and lose nothing.
Start with a URL QR code generator, or read static vs dynamic for the full comparison.