The code is just a picture of a link

A QR code stores text โ€” usually a URL โ€” as a grid of black and white modules. That is all it is: an image format for a string. There is no timer, no expiry field, no scan counter inside the pattern. Print it, laminate it, put it on a wall for ten years, and the modules will still say the same thing.

So a QR code never expires. What expires is whatever it points at.

Then why do people's codes stop working?

Because "QR code" is used to describe two different things, and only one of them survives on its own.

When a code "expires", in almost every case it was dynamic and one of three things happened.

1. The redirect service stopped

The company shut down, discontinued the product, changed its free plan, or simply deleted old links. The code on the wall is fine; the server that answered for it is not. This is the failure mode nobody warns you about when you buy dynamic codes, and it has happened repeatedly across the industry.

2. The destination moved

A static code is only as durable as its URL. Redesign the site, rename /menu to /restaurant/menu, change domains, and the code points at a 404. The code still scans perfectly โ€” it just leads nowhere.

3. It never worked reliably

The most common "expired" code was simply printed too small, on a low-contrast background, with no quiet zone, or stretched out of proportion. It scanned fine on the designer's screen and fails on a phone at arm's length.

What to check when a code stops working

  1. Scan it and look at the URL bar before the redirect. If you see a short domain you do not recognise, the code is dynamic and that domain is the weak point.
  2. Open the destination directly. If the page itself is gone, no amount of QR debugging will help.
  3. Try from a second phone and a different network. Corporate Wi-Fi and old scanners fail more often than codes do.

How to print a code that cannot strand you

There is one rule that removes most of the risk: make the code encode a link you control. If the pattern contains yourdomain.com/x7 and that link is yours, you can repoint it whenever you like, and you can check it is alive before you need it.

That is exactly what a short link is. It also has a second benefit: a shorter payload produces a sparser pattern, which is easier to scan at small sizes.

Three habits worth adopting before any print run:

Where TinyTo stands

Links on TinyTo do not expire, and a free account is enough to keep them resolving, so a dynamic code made here keeps working. The honest caveat is the same one that applies to every provider, including us: the redirect depends on a server staying up. What you can control is who runs it and whether you can export the list.

If you only need a fixed image, the free QR code generator makes one in the browser with no account. If the code is going on packaging or a shop window, read how dynamic codes work first โ€” the comparison article covers when static is simply the better answer.

Questions

Do QR codes have an expiry date?

No. A QR code is an image of a link; there is no clock inside it. What expires is the thing it points at โ€” a redirect on someone's server, or the page itself.

Why did my QR code stop working?

Almost always one of three reasons: the redirect service behind a dynamic code stopped running, the destination page moved or was deleted, or the printed code was too small or low-contrast to scan reliably in the first place.

Can I change where a printed QR code points?

Only if it was dynamic. A static code has the URL baked into the pattern and cannot be changed โ€” that is why reprints are the only fix.

What happens to my codes if the company shuts down?

Dynamic codes die with their redirect service. If the host stops answering, every printed code pointing at it becomes a dead square. Static codes are unaffected.

Do QR codes stop working after a number of scans?

No. There is no scan counter inside a QR code. A provider may limit scans on a free plan, but that is a policy on their server, not a property of the code.