The short answer: QR codes do not have an expiration date
A QR code is a printed encoding of data. The black-and-white modules are a machine-readable way of writing down a string of text, most often a URL. Nothing about that encoding includes a timestamp, a counter, or an expiry field. The pattern does not know what day it is, and it does not stop working after some number of scans or some number of months. A QR code printed on a poster in 2015 decodes the exact same data today.
So when people ask whether QR codes expire, the literal answer is no. The code does not age. What people are usually reacting to is a code that stopped working, and a code stopping is a different event from a code expiring. Something downstream of the pattern broke, and the scan no longer lands where it used to.
There are exactly two ways that happens. The first is that the destination the code points at went away. The second is that the code is a dynamic code and the vendor running its redirect turned it off. Both feel like expiration from the outside, because you scan a code that used to work and now it does not. Neither is the QR pattern itself expiring.
The distinction matters because the fix is different for each, and because whether your code is exposed to either failure depends entirely on whether it is static or dynamic. That single choice, made at generation time, decides whether your code can ever go dark. The full mechanism is in our static vs dynamic breakdown; the rest of this post walks through what expiration actually means for each type.
Do static QR codes expire? No, the URL is baked into the pattern
A static QR code encodes the destination directly into the visual pattern. If you generate a static code pointing at example.com/menu, that full URL is literally written into the modules. Any scanner reads the URL out of the pattern and opens it. There is no server in the middle, no vendor lookup, and no account attached to the code. Once you download the file, the vendor that generated it is out of the loop entirely.
That is why static codes cannot expire. There is no subscription to lapse, no redirect to deactivate, and no database entry that anyone can delete. The code is a self-contained copy of the URL in a machine-readable form. Nobody, including the tool that made it, has a switch that turns it off. A static URL QR code, vCard code, or Wi-Fi code works the same way on day one and on day three thousand.
There is one honest caveat, and it is not about the QR code. A static code encodes the URL, not the content at that URL. The pattern keeps decoding example.com/menu forever, but if that page goes offline, gets deleted, or the domain lapses, the scan lands on a dead page. The code still scans perfectly. The destination is what died.
So static codes never expire at the pattern level, and they are only as permanent as the URL you point them at. Point a static code at a stable page on a domain you control and intend to keep, and you have a code that genuinely lasts. Point it at a URL shortener, a free trial subdomain, or a third-party platform that might disappear, and you have borrowed someone else's expiration risk. For most business cards, Wi-Fi signs, and permanent product pages, static is the right and truly permanent choice.
Do dynamic QR codes expire? Only if the vendor switches them off
A dynamic QR code works differently. Instead of encoding your real destination, it encodes a short redirect URL such as ezqr.com/r/abc123, which points at a service the vendor runs. When someone scans the code, their phone hits that redirect, the service looks up which destination you have configured for abc123, and forwards the scan there. The real destination lives in the vendor's database, not in the printed pattern, which is exactly why you can change it after printing without generating a new code.
That design gives you editable destinations and scan analytics, and it is genuinely useful for campaigns, packaging, and anything where the target might change. But it introduces a dependency that static codes do not have. Your printed code now works only if the vendor's redirect service is alive and your specific entry in their database is still active. If either condition fails, every scan of that code dies at once.
So do dynamic codes expire? Not on a timer, and not from age. The pattern is just as permanent as a static one. What can happen is deactivation. The vendor can switch off the redirect for your code, and the two situations where they do are a lapsed subscription and a deleted or closed account. A minority of vendors also deactivate free-tier and trial codes after a fixed window, which is the closest thing in this market to an actual expiration date.
This is the real reason people believe QR codes expire. They print a dynamic code, the subscription behind it lapses months later, the vendor turns off the redirect, and every printed copy goes dead on the same day. It looks like the code expired. It did not. The service behind it was withdrawn. If that code had been static, or hosted with a vendor whose policy keeps codes live after cancellation, it would still work. We cover the failure and the fix in why a QR code stopped working.
What actually makes a QR code die
Strip away the word expire and there are only three things that can stop a working QR code. Knowing which one you are facing tells you whether it is fixable and how.
| Failure | Applies to | What actually happened | Fixable without reprinting? |
|---|---|---|---|
| Dead destination URL | Static and dynamic | The page went offline, was deleted, or the domain lapsed | Static: no. Dynamic: yes, repoint it |
| Subscription lapsed | Dynamic only | The vendor deactivated the redirect when payment stopped | Only if you resubscribe with the same vendor |
| Account deleted or closed | Dynamic only | The redirect entry was removed with the account | Rarely, and only if the vendor restores it |
| Free tier or trial ended | Dynamic only | The vendor turned off codes when the trial window closed | Only by upgrading to a paid plan in time |
| Physical damage or bad print | Static and dynamic | Ink faded, label torn, contrast too low to scan | No, reprint required |
Tips
- If a static code stopped scanning as data, the print is damaged. If it scans but lands nowhere, the destination URL died.
- If a dynamic code stopped working, check your billing status first. A lapsed subscription is the single most common cause.
- A dead destination on a dynamic code is the good case. You repoint it in the dashboard and every printed copy works again without reprinting.
The subscription-lapse trap: the most common cause of dead dynamic codes
Talk to anyone who prints QR codes at scale and the same story comes up. A dynamic code worked fine for a year, then one month the card on file failed, or the campaign owner left and the subscription was cancelled, and suddenly thousands of printed codes pointed at nothing. This is not a rare edge case. It is the default outcome of putting a subscription-dependent redirect on a printed asset and then letting the subscription lapse.
The vendors know this too. Uniqode, one of the larger dynamic-QR platforms, is candid that a lapsed subscription is the leading reason a dynamic code goes dead, because deactivating the redirect is what happens when the plan behind it ends. That is not a knock on any one vendor. It is the honest mechanics of the model. A redirect service costs money to run, the subscription funds it, and when the subscription stops, most vendors stop the redirect.
The trap is that the failure is delayed and invisible until it fires. You print the codes, they work, you ship them, and months later a billing event you may not even notice pulls the plug. By then the codes are on packaging, signage, or business cards you cannot recall. The subscription-trap pattern is the same one that shows up in annual lock-ins and watermark-on-free-tier pricing, and it is why the cancellation policy matters more than any feature on the comparison chart.
The takeaway is not to avoid dynamic codes. It is to treat the cancellation policy as the primary buying criterion the moment you plan to print more than a handful. Ask one question before you commit: if I stop paying, do my printed codes keep working? For most vendors the answer is no, and you want to know that before the print run, not after.
What happens to your codes when you cancel, across the category
The policies vary more than the marketing pages admit. We pulled the published cancellation and code-retention terms of the major dynamic-QR vendors. The pattern that matters is simple: some keep your codes redirecting after you stop paying, and some turn them off. This table is the version to keep.
| Vendor | What happens to dynamic codes on cancellation |
|---|---|
| EZQR Max | Codes keep redirecting indefinitely per published policy |
| QR Tiger Premium | Codes remain active after cancellation |
| Uniqode | Codes remain active per current Terms of Service |
| Flowcode | Dynamic codes deactivated 30 days after cancellation |
| Bitly QR | Subject to retention policy, terms are ambiguous |
| qr-code-generator.com | Deactivated on cancellation per Terms of Service |
| ME-QR | Subject to a retention period, terms are ambiguous |
Tips
- Anything phrased as retention policy, grace period, or subject to deactivation is a red flag for production print. You want the words remain active indefinitely.
- Verify the downgrade policy separately. Some vendors keep cancelled-account codes alive but deactivate codes that exceed a lower plan's limits when you downgrade.
- Get the answer in writing. A screenshot of the clause or a support email is cheaper than reprinting a run.
How to make a QR code that outlives a subscription
If the goal is a code that will never go dead on you, there are two reliable routes. Pick based on whether you need to edit the destination after printing.
The first route is static, and it is the strongest guarantee. Generate a static code pointing at a URL you own and intend to keep alive, and there is no subscription, redirect, or account that can ever switch it off. This is the correct choice for contact details, Wi-Fi access, and any destination that genuinely will not change. The only maintenance is keeping that page and domain live, which you control. No vendor sits between the scan and the destination.
The second route is dynamic done carefully. If you truly need to change the destination after printing, you accept a vendor dependency, so the vendor choice becomes the whole game. Choose one whose published policy keeps codes redirecting after cancellation, and prefer monthly billing so a single missed payment does not lock you out of a code you can no longer edit. The permanent QR generator audit ranks vendors on exactly this, and the EZQR vs Flowcode comparison shows how far the policies diverge at the top end.
A practical middle path many teams miss: use static for the parts that never change and dynamic only for the parts that do. Print the permanent stuff static so it can never die, and reserve dynamic for the genuinely rotating destinations where editable codes earn their keep.
Tips
- For static codes, point at a stable path on your own domain, such as /menu or /contact, and avoid URL shorteners that can themselves be deactivated.
- For dynamic codes, confirm two policies before printing: what happens on cancellation, and what happens on downgrade.
- Prefer monthly billing over annual lock-in so a lapsed payment does not become a lost code.
- Keep the source file for every static code. It is self-contained and reprintable forever.
EZQR's honest position on expiration
We built EZQR around this exact question, because the gap between what codes expire suggests and what actually happens is where most people get burned.
Static codes are free forever, with no signup and no watermark. Generate a URL, vCard, or Wi-Fi code at the homepage, download the SVG or PNG, and it is yours with no strings. There is no account attached, so there is nothing anyone can deactivate. We are upfront that a static code can only die if its destination URL dies, which is a lifecycle you control, not us.
Dynamic codes live on the Max plan, and here is the honest part most vendors leave out. A dynamic code depends on our redirect service, and we say so plainly rather than implying dynamic codes are magically permanent. What we commit to is that we do not silently switch off printed codes: per published policy, codes keep redirecting after you cancel or downgrade, and billing is monthly so a single lapsed payment does not orphan a code you already shipped. The redirect infrastructure is funded by active subscribers, not by turning off the codes of people who left.
That position costs us something. It is why Max is priced as a straightforward monthly plan rather than a cheap teaser that recovers margin by deactivating cancelled accounts' codes. We think that is the right trade for anyone printing dynamic codes at scale. And if you do not need editable destinations or analytics, we will tell you directly to use the free static generator instead of paying for Max.
The bottom line
QR codes do not have an expiration date. The printed pattern is a machine-readable copy of your data, and it does not age, reset, or time out. What people call an expired QR code is one of two downstream failures: the destination URL went dead, or a dynamic-code vendor deactivated the redirect, almost always because a subscription lapsed or an account closed.
Static codes cannot expire, because nothing sits between the scan and the destination. They last as long as the URL you point them at stays live, which is entirely under your control. Dynamic codes do not age either, but they carry a vendor dependency, and the day you stop paying is the day most vendors decide whether your printed assets still work.
So pick with the failure mode in mind. For permanent destinations, contact info, and Wi-Fi, use a static code and keep the destination page alive. For campaigns and rotating destinations where you need editable codes, use dynamic and pick a vendor whose cancellation policy keeps codes redirecting after you stop paying. Generate a static QR free at the EZQR homepage with no signup, or run dynamic on EZQR Max, which keeps your codes live indefinitely per published policy.