TidyTools logo TidyTools
Guide

Why did my QR code stop working?

It scanned perfectly last month. The sign hasn't moved, the paper isn't damaged, and your website is still up — but now phones get an error page, or nothing at all. Here's what actually happened, and how to make a permanent QR code that can't do this to you again.

The short answer

If a QR code worked and then stopped, and the printed code itself is undamaged, it is almost certainly a dynamic QR code whose redirect has been switched off. The code doesn't contain your link. It contains a short URL belonging to whichever generator you used, and that company has stopped forwarding visitors — usually because a free trial ended, a subscription lapsed, a free plan changed, or the service shut down.

The awkward part: this is not a bug. It's the business model. Free dynamic codes are the hook, and the printed signage you've already paid for is the leverage.

Static vs dynamic, in plain terms

Every QR code is a picture of some text. The difference is entirely in what text got encoded.

Static — the link is in the code

  • Encodes yoursite.com/menu directly.
  • The phone reads it and goes straight there.
  • No server in the middle, so nothing can be switched off.
  • Works offline, forever, with no account.
  • Can't be edited after printing, and gives you no scan stats.

Dynamic — the link is a redirect

  • Encodes something like qr-co.xyz/a7Bx2.
  • The phone visits their server, which forwards to you.
  • You can change the destination later, and you get analytics.
  • Depends on that company staying alive and staying paid.
  • When the redirect dies, every printed copy dies with it.

Dynamic codes are genuinely useful — a restaurant chain rotating seasonal menus across 200 table cards has a real reason to want an editable destination. The problem is that most people generating a code for a business card, a wedding invitation or a shop window don't need editing at all, and were never told they'd signed up for a dependency.

How to tell which kind you have

Scan your own code and look at the address

Point your phone camera at it, but don't tap through — read the URL your phone previews. If it shows your own domain, it's static and it'll be fine. If it shows a short domain you don't recognise, that's a redirect, and someone else controls it.

Names to watch for include any short branded domain that isn't yours — the generator's own link shortener. A very short random-looking path like /a7Bx2 after an unfamiliar domain is the giveaway.

The other tell: if you had to create an account to download the code, it was almost certainly dynamic. Static codes need no account, because there's nothing to keep track of.

Other reasons a code stops scanning

Redirects are the common culprit, but rule these out too:

A quick test that separates these: if the code fails on every phone, in every light, instantly — that's a dead redirect or a dead destination. If it works sometimes, it's a physical or optical problem.

How to make one that can't expire

Use a static code, and encode a URL you control. Those two things together are the whole trick.

Static means there is no middleman to fail. Encoding your own domain means that if the destination ever needs to change, you can change it yourself with a redirect on your own server — you keep the flexibility that dynamic codes sell, without handing anyone a switch. Point the code at yoursite.com/menu rather than at the current PDF's exact filename, and you can move that PDF forever.

For anything going to print, a few practical notes: download SVG rather than PNG so the printer can scale it without softening the edges, keep the quiet zone at four modules or more, use dark-on-light with strong contrast, and step error correction up to Q or H for stickers, outdoor signage and curved surfaces. Then test the actual printed piece — not the screen mockup — with more than one phone before you order a thousand of them.

Make a permanent QR code, free Static codes only, generated entirely in your browser. No signup, no redirect, no tracking, nothing stored — so there's nothing anyone could ever switch off. URL, WiFi, contact card, email and SMS, with PNG and SVG download. Open the QR code generator →

Frequently asked questions

Can a QR code expire on its own?

No. The pattern is just encoded text and it never changes or degrades. What expires is the service a dynamic code redirects through. A static code has no expiry because there's nothing to expire — it keeps working as long as the thing it points to exists.

My generator wants a subscription to "reactivate" my code. Do I have to pay?

Only if you need those already-printed codes to keep working, which is exactly the position the free tier was designed to put you in. The alternative is to generate a new static code pointing at your own URL and reprint. Paying keeps you in the same trap next renewal, so if you do pay, treat it as buying time to reprint.

Can I convert a dynamic QR code into a static one?

Not the printed one — its pattern permanently contains the short link. You can make a new static code for the same destination, but it will be a different pattern and will need reprinting. If you still have access to the dynamic account, point its redirect at your real URL first so the old codes keep working while you swap them out.

Are static QR codes less capable?

They hold the same content types — URLs, WiFi credentials, contact cards, email, SMS. The only things you give up are editing the destination after printing and scan analytics. Both require a server in the middle, which is precisely what makes a code able to fail.

Do static codes work without an internet connection?

The scan itself does — the phone decodes the text locally with no network at all. Whether the result then needs the internet depends on the content: a WiFi code or a contact card works entirely offline, while a URL obviously still needs a connection to load the page.