All articles
QR Codesbeginner7 min read

Do QR Codes Expire? What Actually Makes One Stop Working

No. A QR code has no expiry date built into it. The pattern of black and white squares is a fixed piece of encoded data, the same way printed text is fixed. There is no timer inside it, no certificate to renew, and nothing that quietly counts down.

So when a printed code stops working, something around it broke. Almost always it is one of six things, and the difference between them decides whether you can fix it in thirty seconds or need a reprint.

If you are here to make one rather than to understand the problem, the free QR code generator with no expiration covers it: static codes with no account, or five free dynamic codes that keep resolving whatever happens to your plan.

The short version

  • The code itself never expires. Ink and math do not have a shelf life.
  • A static code keeps working until its destination disappears.
  • A dynamic code keeps working until the redirect behind it is switched off, which is usually a billing event rather than a technical one.

That last point is the one that catches people, so it is worth being blunt about it.

Static codes: permanent, and permanently stuck

A static QR code has the destination encoded directly into the pattern. The URL literally is the ink. (Full comparison here.)

Nobody can switch a static code off, because there is no service in the middle to switch off. Scan it in twenty years and your phone will read exactly the same URL it reads today. In that sense a static code is the most durable thing in this article.

The catch is that durability cuts both ways. If the page it points at is deleted, or the domain lapses, or the site moves to a new URL structure, the code faithfully delivers everyone to a dead page forever, and you cannot change it. The code did not expire. Its destination did.

Dynamic codes: editable, and switchable off

A dynamic QR code encodes a short redirect link instead:

https://qr.sunriseqr.com/h3Nk7Rwp

The ink points at that short link permanently. A redirect service looks up where the code should go right now and forwards the scanner there. That indirection is the whole point: it is what lets you change the destination after printing.

It also means there is a service in the middle, and a service can stop answering. This is the real answer to "do QR codes expire," and it has nothing to do with the code.

Across much of this market, dynamic codes are tied to an active subscription. Free tiers are frequently time-limited trials, and when the trial ends or a payment fails, the redirect is deactivated. The printed code is untouched and perfectly scannable. It just resolves to an error page, an upgrade prompt, or an ad. Some plans also cap scans per month and stop redirecting once a code passes the ceiling.

Read that carefully, because it is a genuinely strange arrangement: one missed renewal can switch off every code you have ever printed, all at once, including the ones on packaging sitting in a warehouse. The flyers are still perfect. The link behind them is gone.

The six reasons a QR code stops working

Roughly in order of how often they are the culprit:

  1. The trial ended or the subscription lapsed. The most common cause of a code that worked last month and does not today. Nothing visibly changed, which is what makes it confusing.
  2. A scan limit was reached. Some plans meter scans and stop redirecting past the cap. A campaign that goes well can switch off its own code.
  3. The destination page moved or was deleted. The redirect works fine and delivers everyone to a 404. Common after a site redesign.
  4. The code was paused, archived, or deleted in a dashboard, sometimes by a colleague doing housekeeping who did not know it was in print.
  5. The domain in the destination lapsed. Kills static and dynamic codes alike, and it is easy to miss when the renewal card expires.
  6. The print is the problem, not the link. Damage, fading, low contrast, glossy laminate glare, a size too small for the scan distance, or too little quiet zone around the edge. Covered in the printing guide.

There is a seventh thing worth checking that is not quite a failure. A code that still resolves can still be degraded: some providers route every scan through a full-screen ad before forwarding the visitor, most often on free and entry-level plans. The code technically works, and the experience is somebody else's. What an interstitial is, and how to test any provider for one.

How to tell which one you have

Two minutes of diagnosis:

Does a different phone scan it? If no phone reads the pattern at all, it is a print or damage problem, not a link problem. If phones read it fine and the page is wrong, keep going.

What does the scan actually open? Watch the URL bar the moment it opens.

  • It shows a short link, then an error, upgrade page, or ad: the redirect service turned the code off. This is a billing or account issue and the fix is in that account, not in your artwork.
  • It shows a short link, then a 404 on your own site: the code is fine and pointing at a page that no longer exists. Edit the destination and you are done in thirty seconds.
  • It goes straight to a dead page with no short link in between: static code, dead destination. The pattern cannot be changed.
  • It opens WiFi details or a contact card: static, and working as designed.

If your code has already stopped working

If it is dynamic and the account is the problem, the codes almost always come back the moment the account is current again, because the redirect record still exists. That is the cheap fix, and it is also the moment to ask whether you want to keep printing codes that can be switched off by a payment failure.

If it is dynamic and the destination is the problem, edit the destination. Nothing needs reprinting.

If it is static and the destination is dead, you have two options. Reprint with a dynamic code, which is the right long-term fix. Or, if the printed URL is on a domain you still control, set up a server-side redirect from that exact URL to the new page. The second only works when the printed address is yours, which is a good argument for never printing a static code that points at a domain you do not own.

How to make sure it never happens again

Three habits, in the order they matter:

1. Anything printed should be dynamic. If the destination could ever change, and it can, you want the indirection. Keep static codes for genuinely permanent content like WiFi credentials and contact cards.

2. Check what happens to your codes when you stop paying. This is the question almost nobody asks before printing, and it is the only one that determines whether a print run is safe. Ask it plainly of any provider: if I stop paying, or downgrade, do my printed codes keep resolving? Get the answer before the print run, not after.

3. Own the destination where you can. A dynamic code pointing at your own domain gives you two independent ways to fix things later.

Where we stand on this

We built SunriseQR so the answer to question two is boring.

Free dynamic codes do not expire, are not a trial, and never show an ad to the person scanning. There are no scan limits and no scan metering, so a campaign cannot switch off its own code by succeeding.

If you outgrow a plan or downgrade to a cheaper one, codes over the new allowance keep resolving and keep recording scans, permanently. They simply become read-only until you upgrade or archive an older code, so you can no longer change where they point. Nothing you printed stops working because of a billing change.

That is a design decision rather than a policy promise. The service that answers a scan looks up whether the code is active and where it points. It never looks at your plan or your payment status, so there is no path by which billing can switch a printed code off.

Codes never expire is the whole idea. Everything else is a detail.

Try it

Create a dynamic QR code free: paste a link, style it, download, print. Then come back and change the destination as many times as you like, on any plan, including the free one.

If the code is going on retail product packaging, look at a GS1 Digital Link QR code instead. It is editable in the same way and doubles as the product's barcode at checkout.