Guides

Why Your "Free" QR Code Stopped Working (and How to Avoid It)

A QR code that worked for months suddenly points to a "upgrade your plan" page. It is a common, frustrating story — and entirely avoidable.

By MY FREE QR4 min read
Share

You printed a QR code on your menus, your packaging, or your business cards. It worked beautifully for months. Then one day a customer tells you it scans to a page demanding payment. What happened — and how do you make sure it never happens again?

The most common cause: an expired dynamic code

When a previously working code suddenly redirects to an upsell or a dead page, the culprit is almost always a dynamic QR code whose free tier expired. Dynamic codes point at a short redirect URL owned by the generator service. The service decides where that redirect goes — and when the free period ends, it can swap the destination for a paywall.

This is not a bug; it is the business model. Many "free" QR services lure users with free dynamic codes, then monetize by expiring them. The code itself still scans fine — it is the server behind it that has changed its mind.

Static vs dynamic, revisited

A static code encodes its content directly into the image. There is no server, no redirect, no expiry. The only way a static code "stops working" is if the destination itself goes offline — and even then, the code still scans; the page just fails to load.

A dynamic code encodes a redirect. Its reliability depends entirely on the service staying alive and honoring your account. That dependency is the risk.

Other reasons a code stops working

Not every failure is an expired dynamic code. A few other causes are worth knowing:

The destination went offline

If your code links to a page you deleted, moved, or let the domain lapse on, the code scans but the page 404s. The fix is to restore the page or generate a new code pointing at the live URL.

Physical damage or wear

A printed code that gets scratched, faded, or smudged can become unreadable. Laminate codes exposed to weather, and reprint damaged ones.

Low contrast over time

Some inks fade in sunlight. A black-on-white code printed on cheap paper can wash out outdoors. Use UV-resistant printing for outdoor codes.

The code was too small to begin with

A code that scanned fine on a new phone may fail on an older camera. Print at least 2 × 2 cm, larger for distance scanning.

How to avoid the expiry trap

The single most effective step is to use static codes for anything you print. A static code has no server to expire, so it cannot be held hostage by a pricing change.

Before printing in bulk, ask yourself: if the service behind this code shut down tomorrow, would the code still work? With a static code, the answer is always yes.

A pre-flight checklist for printed codes

  • Confirm the code is static, not dynamic. If the generator mentions "edit later" or "track scans," it is likely dynamic.
  • Test the code on at least two different phones before printing.
  • Print at 2 × 2 cm minimum, larger for posters and distance scanning.
  • Keep a white quiet zone of at least four modules around the code.
  • Save the original image file somewhere you can find it again.
  • For outdoor use, laminate or use UV-resistant ink.

What to do if your code already expired

If you are reading this because a code already broke, here is the recovery path. First, check whether the destination URL itself still works in a browser. If it does, the code is dynamic and the service has expired it — generate a fresh static code pointing at the same URL and reprint.

If the destination is also dead, fix the destination first (restore the page or pick a new URL), then generate a new static code. There is no way to "repair" a printed dynamic code without reprinting, which is exactly why static is safer from the start.

The lesson

A QR code is only as reliable as the thing it depends on. Static codes depend on nothing but the image itself, which is why they keep working year after year. Dynamic codes depend on a service, and services change. For anything you print more than once, go static.

Try it yourself

Generate the code from this article in your browser — free, no sign-up.

Frequently asked questions

Can a static QR code ever stop working?

Only if the destination itself goes offline. The code will still scan, but the linked page will fail to load. The code pattern itself never expires.

How do I know if my existing code is static or dynamic?

Scan it and look at the URL it opens. If it shows a short, branded redirect link (often the generator's domain), it is dynamic. If it opens your exact destination URL directly, it is static.

Is it legal for a service to expire my "free" code?

Usually yes, under the terms of service you agreed to. That is why reading the fine print matters — and why static codes, which need no terms, are safer for permanent prints.

Can I convert a dynamic code to static?

Not the printed one. You can generate a new static code pointing at the same destination URL, but you will need to reprint. Do this before the dynamic code expires to avoid downtime.

Do the codes from this generator expire?

No. Every code generated here is static. It encodes your content directly into the image and works forever, with no account or plan.

MY FREE QRQR tools writer

MY FREE QR writes about practical QR code use cases, printing, and privacy, helping small businesses and creators make codes that work reliably in the real world.