This question almost always arrives too late. Someone made a QR code months ago, printed it on a menu or five thousand flyers, and now it lands on a page asking them to start a subscription. The code looks fine. The camera reads it fine. It just does not go where it did.
QR codes do not rot. But a lot of the ones being handed out do not point at your content at all - they point at somebody else's redirect service, and that service is the part with an expiry date.
The short answer
A QR code is a pattern of black and white squares that spells out a string of text. There is no timestamp inside it, no serial number, nothing that phones home. A code printed in 1994, when Denso Wave invented the format, would still scan on a phone made this year. The pattern is frozen the moment it is generated.
So the code cannot expire. What can expire is whatever sits between it and the thing you wanted people to reach.
Static and dynamic QR codes
Every QR code you will meet is one of two kinds, and the difference is entirely about what got encoded.
- A static QR code has your data written straight into the pattern. Encode https://mysite.com/menu and the squares literally spell out that URL. Nothing sits in between - no account, no dashboard, nothing to keep paying for.
- A dynamic QR code has a short link written into the pattern - something like https://qr.example/aB3xK9 - belonging to the company that generated it. Scanning it hits their server, which forwards the visitor on. That forwarding step is a service, and services get cancelled, priced up, or shut down.
That middle step buys something real - you can change the destination after printing, and you get scan counts. It also means your poster depends on a third party staying in business and on your card not being declined.
You cannot tell them apart by looking
This is the trap. A QR code's size comes from how many bytes it carries, not from what kind it is. At the default error correction level, https://zenoply.com is 19 bytes and produces a 25x25 grid - QR version 2. A typical dynamic short link, https://qr.example/aB3xK9, is 25 bytes and produces the same 25x25 grid, also version 2. Identical dimensions, completely different life expectancies.
One test settles it in five seconds: point your phone at the code and read the URL your camera previews before you tap. Your own domain means the code is static and yours forever. A domain you have never heard of means you are renting. The QR Code Generator also prints the exact string it is about to encode in an 'Encoded data' box under the preview, so you can check before you download anything.
What actually breaks a QR code
In practice, dead codes come from four causes:
- The redirect service lapsed - a trial ended, a subscription lapsed, or the provider closed. Every code printed through it dies at once.
- The destination moved. The code still resolves, but the page now 404s. This kills static and dynamic codes alike, though a dynamic one can be repointed.
- The printing was too small or too low-contrast - never reliably scannable, it just happened to work on the designer's screen.
- The physical copy got damaged - a scuffed sticker, a sun-bleached window decal.
Making one that outlives you
A static code has nothing to expire, because no service is involved - the encoding happens on your device and the PNG or SVG that comes out is just an image.
- Open the QR Code Generator and choose what the code should do: a link, Wi-Fi details, a UPI payment request, an email, an SMS or a phone number.
- Fill in the fields, then read the 'Encoded data' box. That string is exactly what goes into the pattern - if it starts with your own domain, nobody else can switch it off.
- Point links at a URL you control and intend to keep.
- Pick an error correction level, then download PNG for screens or SVG for print.
The one real limitation is the flip side of that strength: the destination is set in ink. Point it at a short path on your own site that you can quietly redirect later, and you get a dynamic code's flexibility with none of its dependence on someone else.
Error correction: how much damage it survives
QR codes carry redundant data so they still read when part of the pattern is missing. Four levels exist, and the trade never changes - more resilience means more squares in the same space:
- L recovers about 7%. Smallest pattern - fine for a screen or a clean printed page.
- M recovers about 15%. The sensible default, and where the generator starts.
- Q recovers about 25%. Good for stickers, packaging and anything handled a lot.
- H recovers about 30%. Use it for a logo over the middle, or a code that will get scuffed.
The cost is visible. This tool's own URL is 41 bytes: at level M it needs a 29x29 grid, at level H it needs 37x37. Denser pattern, so each square is smaller at a given print size - cranking error correction to H on a code you are printing tiny can make it harder to scan, not easier.
The quiet zone is not optional: scanners use the blank margin around the pattern to find where the code begins, and the standard asks for four modules' worth. Designers trim it constantly. The generator defaults to four and warns if you go below.
Printing it big enough
The common rule of thumb: a code should be at least a tenth as wide as the distance it will be scanned from. A menu code read at 30 cm needs about 3 cm. A poster read from 2 m needs about 20 cm - far larger than most people assume.
Watch the individual squares too. That 29x29 code printed 3 cm wide gives each module just over 1 mm, which any phone handles. Shrink it to 1.5 cm and each module is half a millimetre - about where cheap printing and camera shake start costing you scans. Download the SVG for print: it stays crisp at any size, while a small PNG blown up to poster scale goes soft exactly where sharpness matters.
So when is dynamic worth it?
When you genuinely cannot know the destination in advance - a campaign whose landing page is not built yet - or when scan analytics are worth paying for. That is a fair trade. Just go in knowing you are buying a redirect subscription, not a better QR code, and that everything you print inherits its lifespan.
For most other uses - Wi-Fi on a guest room card, a UPI code taped by the till, a link on a business card - static is simply better. Make one with the QR Code Generator: it runs entirely in your browser, so your link, Wi-Fi password or UPI ID never leaves your device, and the image has no account behind it, no scan limit and nothing to renew.
Frequently asked questions
- Do QR codes have a scan limit?
- The code itself has no counter and no concept of how many times it has been read - it is a static image, exactly like a barcode on a tin. Scan limits come from dynamic QR services, where each scan is a request to the provider's redirect server and the plan caps how many of those you get per month. Cross the cap and the redirect stops resolving, which looks identical to the code breaking. A static code generated in your browser encodes your destination directly, so there is no server in the middle to meter anything and no limit to hit.
- Can I change where a QR code points after it is printed?
- Not by editing the code - the destination is part of the pattern, so changing it means generating a new one. There is a way to get the same flexibility without a subscription, though: point the code at a URL on your own domain, such as yoursite.com/menu, and set up a redirect from that path to wherever the content actually lives. You can change that redirect whenever you like, and every code already printed follows it. The difference from a dynamic QR service is that the redirect is yours, so nobody can switch it off or start charging for it.
- How long does a printed QR code last?
- As long as the physical copy stays legible and the destination stays live. The pattern has no shelf life, so the practical limits are ink and paper: sun-bleached window stickers, scuffed labels and rain-damaged signage all fail eventually. Error correction buys real margin here - level Q or H keeps a code readable with roughly a quarter to a third of it damaged - and printing generously sized helps more than anything else. Laminating outdoor codes and re-checking them with your own phone once or twice a year catches problems while they are still cheap to fix.