
Do QR Codes Expire? Here's What Actually Happens
No, a QR code itself never expires — it's a pattern encoding a fixed string of data, with no built-in shelf life. What "expires" is a dynamic code's underlying redirect service, not the QR format itself. The honest answer to "will this code still work in a year?" depends entirely on whether it's static or dynamic, not on anything inherent to QR codes.
The code doesn't expire — but what it points to might
There are two fundamentally different things a QR code can encode, and this is where "expiry" actually comes from. A static QR code encodes its destination directly — a URL, a WiFi password, a vCard's contact details — baked into the pattern itself at creation time. There's no server involved in reading it; a scanner just decodes the pattern back into that original string. Nothing can turn this off except physically destroying the printed code.
A dynamic QR code instead encodes a short redirect link pointing at someone else's server, which then forwards the scanner to the real destination. This is genuinely useful for one specific thing — letting you change the destination later without reprinting the code — but it comes with a real dependency: if that redirect service shuts down, changes its pricing, or you simply stop paying for the plan tier that keeps your code active, the code stops resolving. The physical QR code you printed looks identical. It just points at a server that no longer answers.
Why this trips people up
Most people encounter "does my QR code expire" only after a code stops working, and the instinct is to blame the QR code itself. But a code printed on ten thousand product labels, restaurant table tents, or event badges doesn't fail because the pattern degraded — it fails because whoever generated it used a dynamic/redirect service, and something happened on that service's end months or years later. The code is fine. The link.
This is also why "free QR code generator that doesn't expire" is such a common search — people have usually already been burned once by a dynamic code that quietly stopped working, and they're looking for a way to avoid it happening again.
How to make sure yours doesn't stop working
The only way to guarantee a code never stops working is to make sure it's static from the start — the destination baked directly into the pattern, with no server in between that can go away. QRSen's generator only produces static codes for exactly this reason: what you download today is what scans in five years, because there's no third-party redirect infrastructure it depends on to keep functioning. If you've read the difference between static and dynamic QR codes and decided you genuinely need the "change the destination later" feature that dynamic codes offer, that's a legitimate tradeoff — just go in knowing you're trading permanence for that flexibility, and budget for the ongoing service cost that comes with it.
A related question people often have alongside expiration is whether a code can "wear out" from being scanned too many times — it can't, and the two ideas are worth keeping separate, covered in our guide on how many times a QR code can be scanned.
What actually happens when a dynamic code's service shuts down
In practice, this usually looks like a scan resolving to a generic error page, a "this short link has expired" message, or in some cases a domain that's been resold and now leads somewhere entirely unrelated to the original business — a genuinely bad outcome for anyone who scans an old printed code expecting it to still work. This is the scenario static codes structurally can't produce, since there's no external service in the chain that can disappear.
Static vs. dynamic: what can actually stop working
| Static QR code | Dynamic QR code | |
|---|---|---|
| The pattern itself expires? | Never | Never |
| Depends on a third-party server? | No | Yes |
| Can silently stop resolving? | No | Yes, if the service shuts down or lapses |
| Right choice for permanent print | Yes | Only if you accept the ongoing dependency |
The short version
A QR code, as a pattern, never expires. What can "expire" is a dynamic code's underlying redirect service — if you're printing something you need to still work in a year, use a static code, since there's no subscription or server behind it that can lapse. For the broader tracking implications of that same static/dynamic split, see do QR codes track you.
Quick answers
Can a printed QR code just stop working on its own over time? No, not the pattern itself — if a printed static code stops scanning, it's a physical issue (damage, fading, wear), not the code "expiring." A dynamic code can stop resolving if its redirect service shuts down, which looks the same from the outside but has a completely different cause.
Is there a subscription needed to keep a QR code working? Only for dynamic codes, which depend on a redirect service staying online and paid for. Static codes, like the ones this generator produces, have no ongoing dependency at all.
What happens when a dynamic QR code's service shuts down? The scan typically resolves to a generic error page, an "expired link" message, or occasionally a resold domain leading somewhere unrelated — a bad outcome for anyone scanning an old printed code.
Does scanning a QR code too many times wear it out? No — a QR code can't wear out from repeated scanning any more than a printed word wears out from being read. That's a separate question from expiry entirely.