Do QR Codes Expire? (And Why Yours Stopped Working)
Short answer: a static QR code never expires. The pattern of squares is the data, so a static code printed on a sign in 2015 will still scan today and will still scan in 2045. If your QR code has stopped working, the code itself is almost never the problem — something it points at has changed, or something about how it was printed or displayed has broken the scan.
Static versus dynamic: the distinction that decides everything
A static QR code encodes the destination directly. Scan it and the phone reads the URL, the phone number, or the WiFi credentials straight out of the pattern. Nothing sits in between, there is no server involved, and there is nothing to expire. This is what you get from a free generator that does not ask you to create an account.
A dynamic QR code encodes a short redirect URL owned by the company that made it. Scanning it hits their server, which then forwards you to the real destination. That indirection is genuinely useful — you can change the destination without reprinting — but it means the code only works for as long as that company keeps the redirect alive and you keep paying for it.
This is the single most common reason a working QR code suddenly stops working. The trial ended, the subscription lapsed, or the provider went out of business, and every code you printed died at the same moment.
How to tell which kind you have
Scan it and look at the URL before you open it. If it shows the actual destination you expect, it is static. If it shows a short domain you do not recognise, it is dynamic and dependent on that service. You can check safely without opening the link using the safe QR code scanner, which shows you the destination first.
Eight reasons a QR code stops scanning
- The dynamic service lapsed. Free trial ended or the plan was cancelled. Every code from that account dies together.
- The destination URL changed. The page was moved or deleted and now returns a 404. The code scans fine; the landing page is gone.
- The domain expired. If the code points at a domain you no longer own, it may now belong to someone else entirely.
- A URL shortener shut down. Codes built on third-party shorteners inherit that shortener's lifespan.
- Printed too small. Below about 0.8 in square, phone cameras struggle. Bigger is always safer.
- Not enough contrast. Light grey on white, or a busy photo behind the code, defeats the scanner.
- The quiet zone was cropped. QR codes need clear margin all around, roughly four modules wide. Designers crop this constantly.
- Physical damage. Faded ink, scratches, or a sticker over a corner. Error correction tolerates some loss, not unlimited loss.
How to make a code that outlives the service that made it
If you need permanence — a headstone, a plaque, a product label, anything printed at volume — use a static code pointing at a URL on a domain you control. You keep the ability to change the destination by redirecting at your own server, and you remove any dependency on a third party's business model. That is the best of both worlds and it costs nothing beyond the domain you already own.
If you genuinely need to change destinations frequently and cannot run your own redirects, dynamic is a reasonable trade — just go in knowing that you are renting, not buying, and that everything you print has an expiry date tied to your payment method.
Before you reprint
Test the finished code at the size and on the material you will actually use, with more than one phone. Print a proof, stick it where it will live, and scan it from the distance a real person will stand. A code that scans perfectly on a monitor can fail completely on matte vinyl in low light.
Standards and references
The QR code specification itself is ISO/IEC 18004 (Information technology - Automatic identification and data capture techniques - QR Code bar code symbology specification). QR codes have no expiry field in the specification - they encode text and nothing else. Print-quality grading follows ISO/IEC 15415, which is what determines whether a code physically scans.
Related: create dynamic QR links you control · static vs dynamic QR codes · what L, M, Q and H error correction do · all QR code tools
Which free generators expire codes, by name
Most "my QR code expired" stories trace back to one thing: the code was made on the free tier of a paid dynamic service. Here is how the big names behave, checked August 2026. Policies shift, so treat this as a snapshot.
| Service | Free tier behavior | What happens when it lapses |
|---|---|---|
| qr-code-generator.com | 14 day free trial; codes default to dynamic | Dynamic codes are deactivated at day 14; scans land on a service page, not your destination |
| QR Tiger | 3 free dynamic codes capped around 500 scans each; static codes free and unlimited | A dynamic code stops redirecting at the scan cap, or when a paid plan lapses |
| Bitly | Free plan includes a small number of dynamic codes via bit.ly | Codes keep working while the account exists |
| QR Code Monkey | Fully free, static only, no account needed | Nothing; static codes cannot be switched off |
| Canva | Free QR codes, static URL type | Nothing; only the destination page can go down |
| Flowcode | Free dynamic codes routed through flowcode.com | Free codes stay live under current policy, but every scan depends on Flowcode's servers |
The pattern is simple. Static codes from any of these cannot be switched off. Dynamic codes live exactly as long as your account status, or your scan allowance, says they do.
Decode it to see who controls your code
You do not need the original account to identify the service. Upload a photo or screenshot to the QR decoder and read the URL inside the code. Then match the domain:
| Domain in the decoded URL | Who controls it |
|---|---|
| qrco.de or l.ead.me | qr-code-generator.com |
| qr1.be | QR Tiger |
| bit.ly | Bitly |
| flowcode.com | Flowcode |
| Your actual destination | Nobody: the code is static and cannot expire |
If the decoder shows raw text starting with WIFI: or BEGIN:VCARD instead of a URL, there is no server in the loop at all: the whole payload lives inside the printed pattern.
Rescuing a code already printed on 500 flyers
An expired dynamic code is not a total loss. The redirect is dead, but the short URL is still readable, and that is your recovery thread.
- Decode the printed code to extract the short URL.
- Paste that short URL into the Wayback Machine at web.archive.org. If the link was ever crawled, the snapshot records where it used to redirect.
- Generate a fresh static code pointing straight at the recovered destination.
- Cover the old code with stickers instead of reprinting. Weatherproof 1 inch labels typically run $8 to $15 per 100, against hundreds of dollars for a new print run.
If the code fails to scan at all instead of landing on a service page, that is a print or damage problem, not expiration. Work through the scanning fixes checklist first.
How long the printed code physically lasts
Even an immortal static code dies when the ink does. Typical lifespans by material:
| Material | Typical lifespan |
|---|---|
| Plain inkjet paper, outdoors | 6 to 12 months |
| Laminated or UV coated vinyl | 5 to 7 years |
| Laminated print, indoors | 10+ years |
| Anodized aluminum or laser engraved metal | 20+ years |
Error correction decides how much damage the pattern absorbs before those numbers matter. Level H can rebuild up to 30 percent of the code's data codewords; level L gives up near 7 percent. Anything going outdoors should be generated at level H.
What staying dynamic actually costs
Editable destinations are genuinely useful. The real question is who you pay for them:
- Paid dynamic plan: roughly $60 to $180 per year, every year, or the code dies.
- Static code: $0 forever, but the destination is locked at print time.
- Your own domain redirect: around $12 per year, editable for as long as you renew. The self-owned dynamic links guide walks through the setup.
