Do QR Codes Expire? The Truth About Static and Dynamic
Abhay Khant
Jan 1, 1970 • 5 min read
Do QR Codes Expire? The Truth About Static and Dynamic
- The QR pattern itself never expires; it is ink encoding data, nothing more
- Static codes die when their destination link dies; dynamic codes die with their provider
- Error correction resists damage, not time: we measured its density cost across levels
- Printing redirects on your own domain is the durability fix
The short answer
QR codes do not expire. A QR code is a two-dimensional barcode pattern defined by [Denso Wave, the company that invented it](https://www.qrcode.com/en/about/), and the pattern simply encodes whatever data went in: a URL, plain text, Wi-Fi credentials, per [the format overview](https://www.qrcode.com/en/about/) published by its creators. Pixels and printed dots carry no clock. A code printed correctly today will scan identically decades from now, assuming the paper survives and a reader exists to decode it.
What does expire is the destination. When someone reports a dead QR code, the pattern still decodes perfectly; what broke is the link behind it or the service that promised to keep redirecting it. Understanding that separation turns vague expiration anxiety into concrete engineering choices.
Static versus dynamic: where lifetimes actually live
| Property | Static code | Dynamic code |
|---|---|---|
| Data encoded | Final URL directly | Short redirect URL owned by a service |
| Editable after printing | No | Yes, retarget at the provider |
| Dies when | Target domain or page disappears | Provider shuts down or subscription lapses |
| Scan tracking | None built in | Typically included |
| Ongoing cost | Zero | Subscription, usually annual |
Static codes fail only when their content fails: point one at your own domain and it lasts exactly as long as that domain. Dynamic codes trade dependency for flexibility, which is legitimate for campaigns but means every scan depends on a third party staying solvent. Marketing history is littered with campaigns whose codes died when a generator startup folded, taking every printed poster with it, a failure mode invisible until scans stop.
Error correction: damage resistance, not expiration
A related confusion blames error correction for lifespan. Error correction lets codes survive partial destruction, dirt, tears, and low-quality prints, using Reed-Solomon redundancy as [Denso Wave's error correction page](https://www.qrcode.com/en/about/error_correction.html) explains level by level. Four levels exist, and higher levels spend more of the symbol on redundancy. To quantify the cost, we generated codes for the same 49-character URL at all four levels:
| Level | Version | Modules | PNG size |
|---|---|---|---|
| L (recovers ~7%) | 3 | 29 x 29 | 643 bytes |
| M (~15%) | 4 | 33 x 33 | 793 bytes |
| Q (~25%) | 5 | 37 x 37 | 972 bytes |
| H (~30%) | 6 | 41 x 41 | 1,112 bytes |
Same text, denser symbol as protection rises. Choose H for codes facing weather and wear; L suffices for clean screens. None of these choices affects lifespan: a pristine level-L code outlives any campaign behind it, while a sandblasted level-H code still scans after its target site has moved on.
Why printed codes actually stop working
- Link rot: the encoded URL points to a page deleted in a redesign, the most common death of all, and the reason link rot dominates [QR history](https://en.wikipedia.org/wiki/QR_code) discussions
- Domain lapse: the registered domain expired, taking every static code pointing into it
- Dynamic provider shutdown: the redirect service folded or the free trial expired silently
- App scheme changes: custom app:// deep links break when apps are rebuilt under new schemes
- Physical decay: sun-faded ink and damaged modules exceed what correction can reconstruct
Four of those five causes live on the destination side, which means nearly every dead-code incident was preventable at print time.
Printing for durability
- Encode URLs you control on domains you intend to keep, never raw third-party links
- For editable targets, run your own short redirect path, such as toolsura.com/go/name, so retargeting never depends on an outside subscription
- Pick [correction level H](https://www.qrcode.com/en/about/error_correction.html) for outdoor, industrial, or product-packaging duty
- Log where every public code points; audits beat surprises, and the QR decoder reads any printed sample from a photo
- Batch-printing many destinations stays simple with the QR batch generator, which keeps every payload visible in one list
The background reading for these decisions lives in the [Wikipedia QR code article](https://en.wikipedia.org/wiki/QR_code), whose history section documents how quickly formats and services have churned around the unchanging core standard, and [Denso's overview](https://www.qrcode.com/en/about/) remains the authoritative source on what the format itself guarantees, which is decoding fidelity rather than hosting.
Ink does not expire; infrastructure does
Do QR codes expire? The honest answer is that patterns cannot and links can. The [format's own documentation](https://www.qrcode.com/en/about/) guarantees decoding fidelity, not hosting, so treat every code as a promise about future infrastructure: static codes promise your domain stays alive, dynamic codes promise a vendor stays paid. Make the promise deliberately, prefer your own redirects for anything printed in permanent media, match correction level to physical conditions, and the code will outlast everything around it except the scanner industry itself.


