Do QR Codes Expire? (Static vs Dynamic Explained)

Do QR codes expire? No. A QR code has no expiry date inside it. The black-and-white pattern on your flyer will decode the same way in 2046 as it does today. What can expire is everything the code depends on: the vendor’s redirect, the web page, the domain, or the data in the code itself.
I’m Bhargav, and I run linkutm, which makes QR codes. So I get the angry version of this question a lot: “my QR code expired, I printed 5,000 of them”. Almost every time, the code is fine. Something behind it died.
So this post answers “do QR codes expire” properly. You’ll see what breaks, how static and dynamic codes differ on expiry, which payloads expire by design, and how long a printed code physically lasts. That last part comes from a fade test I ran this week. Then I’ll show you how to make a QR code that doesn’t expire.

The Short Answer: Static vs Dynamic QR Code Expiry
Here’s the whole answer in one table. It covers expiry only. For the full feature comparison, see static vs dynamic QR codes.
| Static QR code | Dynamic QR code | |
|---|---|---|
| What’s encoded in the pattern | Your full destination (URL, Wi-Fi login, contact card) | A short link owned by the QR service |
| Does the code itself expire? | No | No |
| What can make it stop working | Your page or domain goes away | Everything a static code depends on, plus the redirect service, your plan, and your account |
| Who controls its lifespan | You | You and the vendor |
| Can you make it expire on purpose? | No, only by taking the page down | Yes, by deactivating or scheduling the link |
| Can you fix it after printing? | No | Yes, change the destination |
Real talk: neither type is “permanent” by default. A static code trades vendor risk for zero flexibility. A dynamic code trades flexibility for one extra thing that has to stay alive.
What Actually Expires When a QR Code Stops Working?
A QR code is a link in a chain, not the whole chain. To answer “do QR codes expire” for your specific code, you need to know which links your code depends on.
First, two definitions:
- QR code: a two-dimensional barcode that stores data in a grid of square modules. Denso Wave announced it in 1994, and it’s defined by the ISO/IEC 18004 standard.
- Payload: the data stored in the pattern. That’s a URL most of the time, but it can be Wi-Fi details, a contact card, or a payment request.
The QR standard covers how that data is laid out: the version, the error correction level, the mask pattern, and the data itself. None of those fields is a date. A scanner has nothing to check a date against. It reads whatever the pattern holds and hands that to the phone.
Here’s the chain behind a scan:
- The printed symbol. The ink and the paper. It can fade, tear, or get covered. It can’t expire.
- The payload. A URL, a Wi-Fi password, a payment request. Some payloads have their own expiry (more on that below).
- The redirect server (dynamic codes only). It’s the vendor’s server that receives the scan and forwards it to your page. Its short link is what’s actually encoded.
- Your account and plan (dynamic codes only). If the vendor stops redirecting because you stopped paying, the code goes dead.
- The domain. Whether it’s the vendor’s domain or yours, it has to stay registered and resolving.
- The destination page. If someone deletes it during a site redesign, scanners land on a 404 error.
Every “my QR code expired” story I’ve seen broke at step 4, 5, or 6. That’s link rot, not QR code expiry. Link rot is the slow decay of URLs that stop pointing where they used to.

The limitation: you can’t see this chain by looking at a code. Scan it once and check where the URL goes before you trust it. A redirect checker shows every hop.
Do Static QR Codes Expire?
No. A static QR code never expires, because nothing sits between the scan and your content.
A static QR code stores the destination directly in its pattern. The phone decodes the URL and opens it. No company’s server is involved, so no company can switch it off. That’s why every free generator, including linkutm’s free QR code generator, can honestly say its static codes never expire.
Here’s the thing, though. “Never expires” isn’t the same as “always works”. A static code is exactly as permanent as the thing it points to:
- The page gets moved or deleted. That’s the most common failure by far. A site migration changes
/spring-menuto/menu/springand every printed code now hits a 404. - The domain lapses. If your registration expires, the URL stops resolving. ICANN’s Expired Registration Recovery Policy requires the registrar to interrupt DNS for at least the last eight days the domain is still renewable. If the domain is then deleted, you get a 30-day Redemption Grace Period, and after that someone else can register it. If a stranger buys the domain, your printed codes now send customers to their site.
- The data inside changes. A Wi-Fi code stops working when you change the password. A contact card goes stale when you change your phone number. The code still scans, but the information is wrong.
The fix for all three lives on your side: keep the URL alive. If a page must move, put a 301 redirect on the old path. That’s the one thing you can still do for a static code after printing.
The limitation: you get no warning. A static code has no scan analytics, so the first sign of a broken static code is usually a customer complaint.
Do Dynamic QR Codes Expire?
A dynamic QR code doesn’t expire on its own either. But it stops working the moment the redirect behind it stops. In practice, that’s what people mean when they say a QR code expired.
A dynamic QR code stores a short link instead of your real URL. When someone scans it, the vendor’s server looks up where that short link should go and forwards the visitor there. That middle step is what lets you edit the destination after printing and count scans. It’s also a dependency you don’t fully control.
A dynamic code stops working when:
- A free trial ends. Some vendors deactivate trial codes when the trial runs out. This is the classic “it worked for 14 days” story.
- You cancel or downgrade. Some vendors keep the codes working after you leave. Others send scanners to their own service page or an error page.
- You hit a plan limit. Some free plans cap scans or active codes.
- The vendor shuts down or gets acquired. If their domain stops resolving, your code dies with it, no matter what you paid.
What each vendor does after you stop paying varies a lot, and I’ve already documented it. My best QR code generators comparison has every vendor’s stop-paying policy in their own words. It also shows what a phone sees when a code dies. I won’t repeat it here. The one-line version: read that policy before you print, not after.
Look, there’s an upside that static codes can’t match. A dynamic code that breaks can be fixed. Point it at a new page and every printed copy works again. A static code pointing at a deleted page can’t be repaired after printing.
For my own product, here’s the policy. linkutm’s pricing page says “Existing links always keep working”, and every linkutm dynamic QR code is one of those links. The free plan includes 25 QR codes a month.
The limitation: even a vendor with a great policy is still a vendor. If the code’s short link is on their domain, you’re trusting that company to exist in ten years. The only way out of that trust is your own domain, which I’ll cover in the how-to below.

Which QR Code Payloads Expire on Their Own?
Some QR codes expire because the thing inside them was designed to expire. That’s not a bug in the code. It’s how the system behind it works.
| Payload | What expires | Verified rule |
|---|---|---|
| Pix payment code (Brazil) | The charge | The Central Bank’s Pix API spec gives each immediate charge a lifetime in seconds (calendario.expiracao), defaulting to 86,400 (24 hours) |
| Zoom meeting link | The meeting ID | Zoom says a one-time meeting ID “will expire 30 days after the scheduled date”. Recurring IDs expire after 365 days with no meeting started |
| WhatsApp group invite | The invite link | WhatsApp says “Once an invite link has been reset, the previous link can’t be restored”. The QR invite uses that same link |
| Google Drive shared file | The viewer’s access | Work and school accounts can set “Access expires” up to one year ahead, per Google Drive help |
| Google Form | Responses | A closed form shows “Form is no longer accepting responses” |
| Wi-Fi login | The password | A Wi-Fi QR code stores the SSID and password as text, like WIFI:T:WPA;S:mynetwork;P:mypass;;. Change either and the code fails |
A payment QR code is the clearest example. A dynamic payment code carries a specific amount for a specific transaction, so an expiry is a feature. You don’t want a 24-hour-old charge being paid again next week.
Okay, so what’s the practical rule? Before you print, ask: will the thing inside this code still be valid in six months? A Zoom link on a conference poster for a meeting next spring is a code that will expire, even if it’s static.
The limitation: I verified these rules from each provider’s own docs on October 20, 2026. Providers change rules, and I can’t promise a payment app in another country works the same way.
Can a Printed QR Code Wear Out?
Yes, physically, but slower than most people fear. Ink fading and paper yellowing reduce contrast, and a code only fails once very little contrast is left.
I wanted real numbers, not “it depends”. So on October 20, 2026, I ran a print-fade test. I compared two codes:
- A static code holding a 120-character UTM URL
- A dynamic-style code holding a 27-character short link
I printed both at the same size, as you would on a flyer, at two print sizes: small (240 px across in the camera frame) and large (400 px). Then I faded them in two ways:
- Uniform: the ink lightens and the paper yellows evenly, like indoor ageing.
- Gradient: one edge stays fresh and the other fades, like sun through a shop window.
Each setting ran 40 times through a simulated phone capture (slight tilt, blur, sensor noise) and was decoded with zxing-cpp 3.1.1. I counted a setting as passing at 38 of 40 scans or better.
Contrast here means how different the dark modules are from the paper, as a percentage of a fresh print. A module is one square of the QR grid.
| Remaining contrast (uniform fade, level M) | Static URL, small print | Short link, small print | Static URL, large print | Short link, large print |
|---|---|---|---|---|
| 100% (fresh) | 40/40 | 40/40 | 40/40 | 40/40 |
| 30% | 40/40 | 40/40 | 40/40 | 40/40 |
| 25% | 40/40 | 35/40 | 40/40 | 40/40 |
| 20% | 39/40 | 14/40 | 40/40 | 40/40 |
| 16% | 23/40 | 2/40 | 40/40 | 40/40 |
| 10% | 0/40 | 0/40 | 40/40 | 40/40 |
| 8% | 0/40 | 0/40 | 40/40 | 40/40 |
| 6% | 0/40 | 0/40 | 9/40 | 13/40 |
Three things surprised me:
- Print size mattered most. The small codes started failing at 20 to 25% of their original contrast. The large ones read down to 8%. Bigger modules give the camera more pixels to average out noise.
- The payload didn’t matter much. I expected the dense static code to fade out first. At the small size it actually held on slightly longer. The real advantage of a short link is that you can print it smaller in the first place. The QR code smallest size guide has that module math.
- One-sided sun fading barely hurt. Every code still decoded 38/40 or better with one edge faded to 5% of its contrast. Scanners adjust their threshold across the image.

So how long do printed QR codes last? A code that starts at 100% contrast has a lot of room. In practice, physical damage, a sticker, or a torn corner will usually kill it before fading does. Higher error correction helps with that kind of damage. That mechanism is covered on the QR code error correction page.
The honest limitation: this is a simulation, not a five-year outdoor trial. Phones use Apple’s and Google’s decoders, not zxing-cpp. OpenCV’s detector was pickier, and it already missed scans on the densest static code (level H, small print) at full contrast. Treat my numbers as directional. The script and raw results are saved, so I can rerun them on new decoders.
How to Make a QR Code That Doesn’t Expire
If you want a QR code that doesn’t expire, aim for this: keep every link in the chain under your control. Here’s how I’d set one up for anything printed to last more than a year.
- Point the code at a URL on a domain you own. Never encode a vendor’s page, a document share link, or a meeting link directly. Use something like
yourbrand.com/menu. Then if the destination moves, you can redirect it. - Choose static or dynamic deliberately. Static if you’ll never change the destination and don’t need scan data. Dynamic if you might change it or want scan counts in your analytics.
- For dynamic, put the short link on your own domain. A custom domain like
go.yourbrand.commeans the encoded link belongs to you. If a vendor fails, you can point that domain at a new service and recreate the same paths. linkutm supports branded domains from the Personal plan up. - Turn on auto-renew for the domain. You can register a .com for up to 10 years at a time. Auto-renew plus a card that won’t expire is cheaper than a reprint.
- Test the printed proof on two phones. Scan from the distance people will actually stand, in the light where the code will hang.
- Audit once a year. Scan every live printed code, check it lands on the right page, and fix any redirects your site redesign broke.
Here’s why step 3 is the one I care about most. A static code on your own domain has no vendor risk. A dynamic code on your own domain has almost none, plus you keep the ability to edit. That’s the closest thing to a truly permanent QR code.
The limitation: owning the domain moves the risk to you. If nobody on your team owns the renewal, you’ve swapped vendor risk for forgot-to-renew risk.
Can You Make a QR Code Expire on Purpose?
Yes, but only a dynamic one. A static code can’t be switched off. The URL is in the ink, so the best you can do is take the page down or redirect it.
Why would you want an expiring QR code? Time-limited offers, event check-ins, a beta signup that closes, or a coupon you don’t want screenshotted and reused next quarter. Link expiration is the general idea: a link that stops working after a date or a number of clicks. I covered seven campaign uses in my post on expiring links.
With a dynamic code, you have two clean options:
- Deactivate or schedule the link. In linkutm, link scheduling (Agency plan) can set a link to go live or deactivate automatically on a set date.
- Repoint instead of killing. When the offer ends, send the code to an “offer ended, here’s what’s on now” page. You keep the traffic instead of showing a dead end.
I prefer the second option almost every time. A dead QR code on a printed flyer annoys the customer and earns you nothing. A repointed code still sells.
The limitation: deactivation only controls your link. Anyone who already saved the destination URL can still visit it, so protect the page itself if the offer is truly limited.
Frequently Asked Questions
How long do QR codes last?
The code itself lasts forever, because the QR format has no expiry date. A static code works as long as its destination exists. A dynamic code works as long as its redirect service keeps forwarding scans. In print, my fade test found codes kept scanning until roughly 20 to 25% of their original contrast was left at small sizes, and about 8% at larger sizes.
Can I make a QR code expire on purpose?
Yes, if it’s a dynamic QR code. You can deactivate the short link, schedule it to switch off on a date, or point it at an “offer ended” page. A static QR code can’t be switched off, because its URL is printed into the pattern. The only option is to remove or redirect the page it opens.
Do Wi-Fi QR codes expire?
No. A Wi-Fi QR code stores your network name and password as plain text inside the pattern, so it has no expiry date. It stops working only when you change the network name, the password, or the security type. After a password change, generate a new code and replace the printed one.
Do payment QR codes expire?
Static payment codes, like a shop’s fixed UPI or Pix key code, usually don’t. Dynamic payment codes for a single transaction often do by design. Brazil’s Pix API gives each immediate charge a lifetime in seconds, defaulting to 86,400 seconds (24 hours). Check your payment provider’s rules for the exact window.
What happens to my QR code if my domain expires?
It stops working, whether the code is static or dynamic on your own domain. Under ICANN’s Expired Registration Recovery Policy, the registrar must cut DNS resolution for at least the last eight days the domain can still be renewed. If the domain is deleted and someone else registers it, your printed codes send people to their site. Keep auto-renew on.
Does a QR code stop working if nobody scans it?
Not the pattern itself. A static code doesn’t know whether it’s been scanned. A dynamic code depends on its vendor’s terms, so check whether inactive codes or dormant free accounts get cleaned up. linkutm’s pricing page states that existing links always keep working.
The Bottom Line: Do QR Codes Expire?
So, do QR codes expire? The code never does. The chain behind it can.
- Static QR codes never expire, but they die with their page or domain, and you can’t fix them after printing.
- Dynamic QR codes don’t expire either, but they stop when the redirect, your plan, or the vendor stops. In return, you can repair them.
- Some payloads expire by design: payment requests, meeting links, group invites, shared files, and changed Wi-Fi passwords.
- Printed codes fade slowly. Print size gives you more margin than the type of code does.
- The most permanent QR code encodes a URL on a domain you own and keep renewed.
If you want a QR code that doesn’t expire and also tells you who’s scanning, try linkutm QR codes. Each one is a short link with your UTM parameters, scan analytics, and an editable destination. Put it on your own branded domain, and the free plan includes 25 a month. Just need a quick static code? The free QR code generator makes one in your browser with no signup and no expiry.