Tools › Guides › Do QR codes expire?
Do QR codes expire?
A QR code is printed text and never expires. What expires is the service in the middle, and knowing which kind you have is the whole question.
The code itself cannot expire
A QR code is a picture of some text. The pattern of squares is the data, encoded directly, with no lookup anywhere. Scan it offline, on a phone with no signal, in ten years, and it produces exactly the same text it always did.
There is no server involved, no account, no record of it existing. Nothing can switch it off because there is nothing to switch off.
So when someone says a QR code expired, one of two things happened.
What actually expired
The destination went away. The code encodes https://example.com/menu, and that page was taken down. The code still works perfectly, it still hands your phone that address, and the address leads nowhere.
The shortener in the middle went away. This is the one that bites people.
Static versus dynamic
A static code contains the final destination. What you print is what gets scanned.
A dynamic code contains a short link belonging to a QR service, qr.example.io/a7Fq2: which redirects to wherever you have currently configured it to go. The selling point is that you can change the destination after printing.
The cost is that the code now depends on a company continuing to exist, to run that redirect, and to keep doing it on your plan. Many of the free generators that appear at the top of a search produce dynamic codes without making it obvious, and the free tier turns out to be a trial: the code works for two weeks, and then the redirect starts showing an upgrade page instead of your menu.
This is where "my QR code expired" comes from. Not the code: the middleman.
How to tell which you have
Scan your own code with any reader and look at the text it produces.
- If it is your address, in full, it is static and permanent.
- If it is a short link on a domain you have never heard of, it is dynamic,
and it will last exactly as long as that service chooses to.
Do this before you print a thousand of them.
When dynamic is genuinely worth it
It is not always the wrong choice. If you are printing something expensive and long-lived, and the destination is likely to move: a plaque, a vehicle, a product that will outlive the current website, being able to repoint it is real value, and scan analytics come with it.
If you take that route, pay for it, and understand that the code is now a subscription rather than an object.
For everything else: a menu, a Wi-Fi password, a conference badge, a poster for an event next month, static is correct. It costs nothing and cannot be taken away.
The middle path, if the destination might move: point the static code at a URL on a domain you control, and put the redirect there. You own both ends.
What does make a code fail
Not time, but these:
Too much data. A code holding a long URL needs a much denser grid, which needs to be printed larger or scanned closer. Keep the text short.
Too much error correction, for the size. QR codes carry redundancy so they survive damage, at four levels. Level L recovers about 7% of the code, level H about 30%. H is right for something that will get scuffed: a label, a sticker on a machine, but it makes the grid denser for the same content. Level M is the sensible default.
Not enough quiet zone. The blank margin around the code is part of the specification, four modules wide. Crop it tight against other artwork and readers fail to find the code at all. This is the most common printing mistake.
Poor contrast, or inversion. Dark on light. Light-on-dark fails on many readers, and so does a code printed over a photograph.
Too small for the distance. A rough rule: the code should be about a tenth of the scanning distance. Ten metres away wants a metre across.
What can go in one
More than a URL: plain text, a phone number, an email with a subject and body already filled in, a calendar event, a contact card, and Wi-Fi credentials, which is the genuinely useful one. A Wi-Fi code lets a guest join without anyone reading a password aloud, and it works entirely offline.