Do QR codes expire?
The pixels never expire. The company standing between your pixels and your website does. Whether your code survives depends on one question: static or dynamic?
The short answer
A QR code is a barcode. It encodes data — usually a URL — as a pattern of modules, and any phone camera can decode it forever. Ink on paper does not have a billing cycle. So no, QR codes do not expire.
And yet printed codes stop working every day: restaurant menus, flyers, packaging, conference badges. When that happens, the code did not expire. The redirect service behind it did.
Static vs. dynamic, in one minute
A static code encodes your actual destination: scan it, and the phone opens yoursite.com/menu directly. Nothing sits in between. If the generator that made it disappears tomorrow, the code keeps scanning.
A dynamic code encodes a short link owned by the QR company: scan it, and the phone opens qr-provider.com/x7Kf2, which then forwards to your site. That indirection is genuinely useful — you can change the destination after printing and count scans — but it means the code works only while the provider keeps forwarding. End the trial, miss a payment, or watch the provider shut down, and every printed copy goes dark at once.
Most “free” QR generators default to dynamic codes precisely because of this: the code is the hook, the redirect is the subscription. The complaints are a genre of their own — trial codes dying on printed menus, followed by a monthly fee to turn your own flyers back on. Time is not the only meter, either: the same plan usually caps how many times the redirect will resolve, so a code can go dark from being scanned too often while the subscription is still perfectly current.
How to check a code before you print it
- Scan the code and watch the first URL that appears. On iPhone and Android the camera preview shows the encoded URL before you tap.
- If it is your own domain, the code is static. Print with confidence.
- If it is any domain you do not own — a shortener, the generator’s brand, a string of random characters — the code is dynamic, and its lifetime is your account’s lifetime. Check what happens to it on the free plan before committing to ink.
When dynamic is actually the right choice
Honesty requires the other side: if you truly need to change the destination after printing, or need per-scan analytics, a dynamic code from a provider you pay deliberately is the correct tool. The trap is not dynamic codes; it is being defaulted into one by a “free” generator when a static code would have done the job forever, for nothing. (Coupons look like the obvious case and are not: the coupons-and-vouchers guide keeps the expiry in the till and the code static.)
The permanent option
For menus, WiFi cards, business cards, product packaging and anything else where the destination will not change, a static code is strictly better: no account, no fees, no dependency. Generate it, verify the URL it encodes is yours, and it will outlive the generator, the provider and quite possibly the paper.