The flyers are printed, the table cards are on every table, the poster is on the wall — and one morning someone tells you the QR code leads to a “this code has been deactivated” page, an upgrade offer, or nothing at all. Nobody changed the print. So what happened?
In most cases the answer is not the code itself but what sits behind it. This guide explains the difference between static and dynamic QR codes, the five common reasons a code stops working, how to find out which one hit you, what you can still save once the code is printed, and how to make a QR code that keeps working for as long as the paper lasts.
The Short Answer
A QR code is only a pattern of squares that stores a short piece of text. If that text is your own URL, the code works as long as your website does. If that text is a short link belonging to the QR generator you used, every scan first goes through their server — and that server decides where people end up. When a trial runs out, a subscription lapses or the service closes, the redirect stops, and every printed copy of your code breaks at once.
The first kind is called a static QR code, the second a dynamic one. Many “free” generators produce dynamic codes by default without making the difference obvious.
Static vs. Dynamic QR Codes
| Static QR code | Dynamic QR code | |
|---|---|---|
| What is stored in the code | Your actual content, e.g. https://yourcafe.com/menu |
A short link on the provider’s domain, which redirects to your content |
| Who controls where it leads | You (it is printed in the pattern) | The provider’s server, via your account |
| Expires? | Never — there is nothing to expire | When the account, trial or service ends |
| Change the destination after printing | Not directly (but see the redirect trick below) | Yes, in the provider’s dashboard |
| Scan statistics | No (unless your own website counts visits) | Yes, collected by the provider |
| Cost | Free | Usually a subscription |
Neither type is a scam in itself. Dynamic codes are genuinely useful for marketing teams who change campaigns weekly and want scan counts. The problem is people who only needed a link on a flyer and ended up renting it without noticing.
How to Tell Which Kind You Have
- Open your phone’s camera and point it at the code. Before you tap, the phone shows a preview of the link.
- Look at the domain in that preview. If it is your own domain (or the page you meant to link), the code is static. If it is a short domain you don’t recognise — typically the name of a QR or link-shortening service — the code is dynamic.
- If you still have the original file, the generator’s dashboard or invoice will also tell you. Anything with “edit destination”, “scan analytics” or “plans” is a dynamic code.
Five Reasons a QR Code Stops Working
1. The free trial or subscription ended
This is the most common one. A number of generators let you create a dynamic code for free, and the redirect only keeps working while the trial or a paid plan is active. Afterwards, scans land on a notice page from the provider — sometimes asking the person scanning to tell the owner to renew. Independent articles such as “Your QR Code Stops Working the Moment You Stop Paying” describe exactly this pattern, and it shows up regularly in user reviews of QR services.
How to recognise it: the scan opens the provider’s website instead of yours, often with words like “deactivated”, “expired” or “upgrade”.
2. The service behind the short link shut down
Even a paid redirect is only as permanent as the company running it. The best-known example is Google’s own URL shortener: goo.gl stopped creating new links in 2019, and Google announced in 2024 that all goo.gl links would stop working on 25 August 2025. After public pushback, Google changed course on 1 August 2025 and kept actively used links alive — but links that had shown no activity in late 2024 were switched off. Any QR code printed with such a link went with them. Smaller QR and shortener services can disappear with much less notice.
3. The page it points to is gone
Static codes don’t expire, but the page they point to can. Typical causes: a website relaunch that changed the URLs (/menu became /our-food), a PDF that was replaced with a new file name, an expired domain, or a page on a platform you no longer use. The scan works perfectly — and then shows a 404 error.
How to recognise it: the link preview shows your domain, but the page says “not found”.
4. The code can’t be read any more
Sometimes the phone simply doesn’t react. That is a physical problem, not an expiry:
- Too little contrast — light grey on white, or a brand colour that is too pale. Dark on light works best. You can check a colour pair with our Color Contrast Checker.
- Inverted colours (light code on a dark background) — many phones handle it, some don’t.
- No quiet zone — the code needs an empty border of about four modules (squares) on every side. Text or a frame printed right up to the edge breaks it.
- Too small for the distance — around 2 × 2 cm (0.8 × 0.8 in) is a sensible minimum for something held in the hand; posters seen from a few metres need to be much larger.
- Too much content — a long URL makes a denser code with smaller squares. Keep links short.
- Wear and glare — faded outdoor prints, glossy laminate, a scratch through a corner.
5. Someone covered it
On parking meters, posters and restaurant tables, criminals sometimes stick their own QR code over the real one. If your code suddenly leads somewhere unexpected and it isn’t one of the cases above, check the print itself for a sticker.
Can I Fix a Code That Is Already Printed?
It depends on the cause:
- Trial or subscription ended: the only way to revive the printed copies is to reactivate the account with the same provider. The short link belongs to their domain, so nobody else — not even you — can point it somewhere new. If paying isn’t worth it, the honest answer is to reprint with a static code.
- Service shut down: the printed code cannot be saved. Reprint.
- Page gone (static code): this one you can fix without reprinting. Put a page back at the old address, or set up a redirect from the old URL to the new one on your website.
- Unreadable: reprint larger, with stronger contrast and a proper white border. You can keep the same content, so people with an old copy aren’t affected.
How to Make a QR Code That Never Expires
A code only expires if it depends on someone else’s server. So the rule is simple: put your own URL directly into the code.
- Open the free QR Code Generator. It creates static codes only, runs entirely in your browser and needs no account — there is nothing that could be switched off later.
- Paste your link, ideally a short one on your own domain, such as
https://yourcafe.com/menu. - Expand “Encoded content” under the preview to confirm the code contains exactly your URL and nothing else.
- Keep the default error correction (Medium), or choose Quartile for prints that may get dirty or creased.
- Download the SVG for print — it stays sharp at any size — or a PNG with 16 or 24 px modules.
- Scan the result with at least two phones before you send anything to the printer.
The trick: a static code you can still change
The one real advantage of dynamic codes is that you can change the destination after printing. You can get that without renting anything: point the code at a short address on your own domain that exists only for this purpose — for example yourcafe.com/qr/menu — and let your website redirect it to the current page.
- On Apache hosting, a single line in
.htaccessdoes it:Redirect 302 /qr/menu /our-food/autumn-menu.pdf. Our .htaccess Generator builds the line for you under “Custom Redirects”. - Use 302 (temporary) rather than 301 for these addresses. Browsers remember 301 redirects, so a phone that scanned the code before might keep going to the old target after you change it.
- WordPress sites can do the same with a redirect plugin, and most website builders have a “redirects” setting.
The printed code now contains your own address, which only stops working if your website does — and you can send it anywhere, as often as you like.
When a Dynamic Code Is Worth Paying For
To be fair: if you run many campaigns, need scan counts per location, or hand codes to people who can’t edit a website, a dynamic QR service can be worth its price. Just choose it on purpose, read what happens when you cancel, and prefer services that let you use your own domain for the short links — then your printed codes don’t depend on a single provider.
Frequently Asked Questions
Do QR codes expire?
The code itself never does — it is just a printed pattern. What can expire is a dynamic redirect behind it, or the web page it points to. A static QR code that contains your own URL works for as long as that URL does.
Why does my QR code say “deactivated”?
That message comes from the provider whose short link is stored in your code, not from your phone. It almost always means the trial or subscription for that dynamic code has ended. Reactivating the account brings the code back; otherwise, replace it with a static code.
Can I change where a static QR code points?
Not by editing the code — its content is fixed in the pattern. But if the code contains a URL on your own domain, you can redirect that URL wherever you want, which gives you the same flexibility without a subscription.
Is it safe to use a free QR code generator?
Check two things: whether the code contains your URL or the provider’s short link (scan it and look at the preview), and whether your data is sent to a server. Our generator creates static codes in your browser; nothing you type is uploaded.
How long does a static QR code work?
Indefinitely. QR codes were invented in 1994, have been an ISO standard since 2000, and every modern phone camera reads them. In practice the limits are the print (fading, damage) and whether the website behind the URL still exists.