The short answer: no. A QR code is a printed pattern that encodes text, and printed patterns do not have expiry dates. A code printed in 2011 will decode to exactly the same string today.
The longer answer is that people asking this question are almost never asking about the pattern. They are asking whether the thing will still work in two years, and that depends entirely on what the code points at.
The three things that actually break
1. The destination moves or dies
This is the most common failure by a wide margin, and it affects static and dynamic codes alike. Your site gets rebuilt, the campaign page is deleted, a product is discontinued, the domain lapses. The code decodes perfectly and delivers the scanner to a 404.
With a static code there is nothing to be done — the URL is in the ink. With a dynamic code you repoint it and every printed copy recovers.
2. The redirect service goes away
This one is specific to dynamic codes, and it is the honest cost of the indirection. If the platform resolving your short URL shuts down, changes its domain, or deletes your account, the codes stop working even though the destination is perfectly healthy.
It is a genuine dependency and worth managing: pick a provider you expect to persist, keep an export of what each code points to, and be wary of free tiers that quietly expire codes after a trial. Ask specifically whether codes stay live on the free plan — plenty of generators are free to create and time-limited to use.
3. Someone set an expiry date on purpose
Dynamic codes usually offer an optional expiry. Set one and the code stops resolving on that date, which is a feature rather than a fault: a promotion that ends, a ticket that should not be reusable, a document that should stop circulating. If a code has mysteriously stopped working, this is the first setting to check.
On this platform: codes have no expiry unless you set one, and codes created on the free plan stay live. Expiry is opt-in, per code.
What about the printed code itself?
Physical degradation is real but slow. The things that kill a printed code are sunlight fading the contrast, abrasion on a surface people touch, and lamination going cloudy. Error correction covers a surprising amount of damage — a code at the high correction level can lose roughly 30% of its area and still decode — which is why a logo can sit in the middle of one.
If the code lives outdoors, use a UV-stable ink, keep the contrast high rather than fashionable, and choose matte over gloss so low sun does not turn it into a mirror.
How to make a code that lasts
- Point dynamic codes at a stable destination you control, and keep a record of every code and its target.
- Prefer a domain you own for the destination, so a rebuild does not orphan the link.
- Leave expiry unset unless you specifically want the code to stop.
- Re-scan long-lived printed material once a year — signage especially — and check the destination still resolves.
- For anything printed in the thousands, use a dynamic code so a broken destination is a two-minute fix rather than a reprint.
If you want the version of this where a dead link is never a reprint, that is what a dynamic QR code is for. For the print-side details, see the best QR code size for printing.