Do QR codes expire? The truth about "expired" QR codes and how to make permanent ones

4 min read

“I made a free QR code online and it stopped working after a while.” “Do QR codes have an expiration date?” The answer is structurally interesting: QR codes themselves never expire, but QR codes generated through certain services do. This article explains why.

QR codes have no notion of “expiration”

A QR code is just a black-and-white dot pattern that encodes information. The encoded data (URL, text, Wi-Fi config, etc.) is fully contained in the QR image — no server lookup is required.

So once you have a QR code image, it always returns the same information, whether printed on paper or stored digitally. Scan it 10 years later and you’ll get the same URL.

So why do “expired QR codes” feel like a real thing?

The issue is what was encoded into the QR. There are three patterns to distinguish.

Pattern 1: Static QR with a direct URL

QR code ↔ https://example.com/page  (directly embedded)

This pattern is permanent. As long as the destination page exists at the same URL, the QR works forever.

Pattern 2: QR with a shortened URL inside

QR code ↔ https://bit.ly/3xYzAbc → https://example.com/page

A shortened URL (bit.ly, t.co, tinyurl) sits in the middle. If the URL-shortening service deletes the link or shuts down, the QR scans correctly but the redirect target is unreachable. Some Bitly free-tier links auto-expire after 90 days of inactivity.

Pattern 3: “Dynamic QR” via a QR-generation service

This is the most common cause of “my QR expired”:

QR code ↔ https://qr-service.com/r/abc123 → https://example.com/page

QR-generation sites that advertise “you can change the destination URL later” use a dynamic QR, which routes through their own redirect server. If the account expires, the subscription lapses, or the service shuts down, the QR dies.

Many “free QR code” services generate dynamic QRs by default and apply free-tier expiration limits.

How to make truly permanent QR codes

The simple rule: embed the final URL directly into the QR (Pattern 1).

Specifically:

  1. Use the actual destination URL — encode https://example.com/path/page directly
  2. Avoid shorteners — don’t go through bit.ly etc.
  3. Avoid services advertising “Dynamic QR” or “editable QR” — those route through a redirect server with expiration risk
  4. Choose Static QR (sometimes labeled “permanent”) — services that explicitly call themselves Static or Permanent

Local browser generation is the safest option

QR encoding is mathematically simple (Reed-Solomon error correction added to the data), and generating in-browser locally avoids any redirect server entirely, guaranteeing a permanent QR.

The QR generator on this site fits this pattern:

  • QR is encoded in the browser
  • Data is never sent to a server
  • The generated QR is Static, with no concept of expiration
  • No account or sign-up

The trade-off vs “dynamic QR” services: with a static QR, you cannot change the destination URL later. That’s a feature, not a bug — it’s exactly why the QR doesn’t expire.

Edge cases where a QR really does fail

A few rare cases:

1. Print degradation

Paper QRs that get dirty, fade, or tear become unreadable. Setting a higher error-correction level (L/M/Q/H) helps tolerate damage. For outdoor signage or business cards meant to last, level H (30% recoverable) is recommended.

2. The destination URL itself 404s

The QR is still valid, but if the linked page returns 404, users can’t reach the content. Strictly speaking that’s not “QR expiration” but the user experience is identical.

3. Logo overlay too aggressive

QR codes with a company logo overlaid in the center can become unreadable if the logo exceeds the error-correction allowance. Cap the logo at ~25% of the area and use level H.

Checklist: how to spot a “permanent QR”

Criteria for choosing a QR generator:

  • “Static QR” or “permanent” / “no expiration” stated explicitly
  • URL is embedded directly (no redirect through their server)
  • No account or login required
  • Doesn’t promise “you can change the destination later” (that implies a redirect server)
  • No “Free for X days” expiration mentioned

Conversely, if you genuinely need to change the destination later or get analytics, a paid dynamic-QR service (Bitly, QR Code Generator Pro, etc.) is the right fit. The two categories solve different problems.

Summary

  • QR codes themselves never expire (the data is fully in the image)
  • “Expired” QRs come from shortened URLs or redirect servers in the middle
  • For permanent QRs, embed the final URL directly (Static QR)
  • Generating locally in-browser eliminates any service-shutdown risk

For embedding a URL directly into a QR, the QR generator on this site produces static-form QRs with no expiration concept — safe for printed materials, business cards, and posters meant to last.