All posts
From the blog

The 14-day expiration trick: how 'free' QR sites actually work

An honest tour of the standard freemium playbook in the QR industry, what's really happening when your code stops scanning, and how to tell before you print 500 flyers.

Joe
  • industry
  • explainer

If you’ve used a “free” QR code generator and had a code stop working two weeks later, you weren’t imagining it. You were on the demo plan and didn’t know it. Here’s what’s actually going on under the hood.

A QR code is just a picture of a URL

The QR code itself is a static image. It encodes a string — usually a URL — and any scanner that sees it will dutifully send the user to that URL. Forever. There is no expiration date in the QR spec. There can’t be, because the code is just dots on paper.

So when your QR “stops working,” the dots haven’t changed. Something at the other end of the URL changed.

The redirect sleight of hand

Here’s what most “free” generators do without telling you:

  1. You type in https://my-restaurant.com/menu.
  2. They generate a QR code. But the QR code does not encode your URL.
  3. Instead, the QR encodes something like https://qr-provider.example/r/abc123.
  4. When someone scans, they hit the provider’s server, which then redirects to your real URL.

This is a dynamic QR. It’s a useful pattern — you can change the destination later, see scan analytics, etc. — and there’s nothing inherently wrong with it.

Scan Your customer request qr-provider.example /r/abc123 KILL SWITCH flips ON after day 14 The "free" provider's server 302 redirect → /upgrade my-restaurant.com /menu Today's specials · Tagliatelle al ragu Where you wanted them to land
Where the kill switch lives in a 'free' dynamic QR.

The problem is that none of this gets disclosed up front. You think you got a static QR for free. You actually got a free trial of a paid product. The clock starts the moment you download.

The expiration is a feature flag

When the 14-day “trial” is up, the provider doesn’t change the QR. They flip a flag in their database. The redirect now points to an upgrade page instead of your menu. Same QR, same dots, completely different behavior — because they own the middle hop.

You can verify this in about ten seconds. Take any “expired” QR, scan it, and look at the URL bar of where you land. If you see the QR provider’s domain in front of an upgrade prompt, that’s the trick in action.

How to tell which kind you’re getting

Before you print anything, check the URL the QR encodes:

That doesn’t mean dynamic is bad. Dynamic QRs are genuinely the right answer when you want to update the destination later, or see scan stats. They just need to come from a provider whose business model isn’t “rent your codes back to you.”

What we do differently

On Actually Free QR Codes:

If we ever shut down, the static QRs keep working forever. The dynamic ones would stop, same as any other redirect — that’s an unavoidable property of dynamic QRs from any provider. We’d give as much notice as humanly possible, and we’d export your destinations so you could rehost them.

That’s the entire promise. It is shockingly easy to keep, once you decide not to lie about it.

Need a QR code that won't expire?

Make one in your browser, free, no signup. Or sign in with Google to manage dynamic codes with scan stats.