fixmint

Why some printed QR codes stop working one day

· 5 min read

A QR code that stops working usually points to a redirect service, not to the website you think it points to. A static code holds the destination itself, so it works for as long as that destination exists. A dynamic code holds a short link owned by a provider, which forwards each scan to your real address. If the provider's subscription lapses or its terms change, the forwarding can stop, and the printed square becomes a dead end.

QR code generatorNeed a QR code that won’t expireOpen

What a QR code actually holds

A QR code is a grid of dark and light squares that stores a piece of text, usually a web address. When a phone scans it, the camera reads the text and offers to open it. The pattern does not contain a server, a timer or a subscription. It holds exactly the characters it was made from, and nothing more.

The two kinds differ in which characters they hold. A static code stores your final address, such as https://example.com/menu. A dynamic code stores the provider's address, such as https://qr.example/x7k2, and the provider looks up where x7k2 should send people. You can change that target later without reprinting, but the link now depends on the provider staying online and staying in business.

Why dynamic codes stop working

Dynamic codes are sold on convenience: you can edit the destination, and many show scan counts. The cost is a middleman. The usual ways a dynamic code breaks have nothing to do with the printed square:

  • The subscription ends, and the short link stops redirecting or leads to a payment page.
  • The provider closes, changes its domain or changes what its free plan includes.
  • The provider inserts its own pages or adverts before your destination.

Before you pay for a dynamic code, find out what happens to the printed codes if you stop paying. If the answer is unclear, assume they stop working.

Static codes: permanent, but fixed

A static code never expires, because nothing has to be looked up. Its only weakness is that the destination is fixed. Once a poster is printed, a changed address means the code is wrong, and the only fix is a new print run. The page can also disappear, so a static code is only as durable as the address it holds.

If you want flexibility without a third party, point the code at a short path on a domain you control, such as https://yourdomain.example/menu, and make that path redirect to the real page. You can update the redirect whenever you like. The trade-off is that the redirect only works while you keep the domain, and the phone makes one extra hop.

Static codeDynamic code
Where the destination livesInside the codeAt the provider
ExpiresNever, but the target page can disappearWhen the provider's terms or payment end
Change after printingNoYes
Scan countsNoUsually

Choosing between them

Choose a static code when the destination is unlikely to change: a product page, a menu, a file you will keep hosted, or a Wi-Fi card. Choose a dynamic code only when you genuinely need to change the target, and you accept paying for that. If editing is the goal, a redirect on your own domain usually does the job with less risk.

Long links make codes denser, and dense codes need more space to scan. Before you encode a link full of tracking parameters, clean it with the link cleaner. A shorter address gives you a simpler code that scans more reliably.

Test before you print

Print nothing until the code has scanned correctly from the screen and from paper.

  1. Generate the code and display it full size on a monitor.
  2. Scan it with an iPhone camera and with an Android phone, from a normal distance.
  3. Check that the address that opens matches the one you meant, character for character.
  4. Print one sample at the final size, place it where people will see it, and scan it again in that light.

Size, contrast and the quiet zone

Three things decide whether a printed code scans:

  • Quiet zone. Leave an empty border around the square. The QR standard calls for at least four module widths of blank space on every side. Keep borders, captions and photo edges away from the square.
  • Contrast. Dark squares on a light background are the safest choice. Inverted codes, light on dark, scan on some phones and fail on others, so avoid them for anything important. To compare two colors by their WCAG contrast ratio, the color converter computes it, but that ratio measures text readability, so test the printed code on real phones as well.
  • Error correction. The standard offers four levels, which can recover roughly 7%, 15%, 25% and 30% of the code's data when part of it is damaged or hidden. A higher level tolerates smears and a logo over the centre, but it needs more squares for the same text. Pick the lowest level that covers your risk.

Size follows distance. A code on a table can be small, while a code on a wall must be large enough to scan from where people stand. Test at that distance, not up close.

If your code carries a network password rather than a link, the same rules apply, and sharing Wi-Fi with a QR code covers the extra details.

Quick answers

Will a static QR code ever expire?

The code itself never expires, because the address is inside the pattern. The page it points to can still disappear, so check that the destination will stay online.

Can I fix a printed static code if the address changes?

Not directly. Your options are a reprint, or a redirect on a domain you control that you can update.

Why does my code scan on one phone but not another?

Usually the cause is contrast, size or a missing quiet zone. Test on at least two phones, and print a sample at the final size.

Cover of AI-Era Starter ShelfAI-Era Starter Shelf

Three practical ebooks on AI, work and how machine learning came to be, bundled for less than buying them one by one.

$9.99 Get it on Gumroad →