Dynamic QR codes

Reprint nothing. Change where the code goes instead.

Try the free static generator

Free, no account, and the code never expires. Nothing you type is uploaded.

A static QR code contains its destination. Once it is printed, that destination is fixed — the pattern is the address, so changing one means changing the other. A dynamic code contains a short link instead, and the service behind that link decides where each scan goes. The printed pattern never changes; the answer it gets does.

That distinction only matters after something has been printed, which is exactly when it matters most. A menu that moved to a new URL, a campaign page that ended, a PDF replaced by a newer version, a phone number that changed: with a static code each of those means a reprint, and with a dynamic one it means editing a field.

The trade is a dependency. A static code needs nothing to keep working. A dynamic one needs whoever operates the link to keep answering — which is why the terms of that dependency deserve more attention than the feature list.

What you gain by adding the redirect

Editing the destination is the headline, but it is not the only thing the indirection buys. Because every scan passes through a request you control, the scan can be counted, and it can be answered differently depending on who is asking.

  • Change the destination after printing, as often as you like
  • Count scans, and distinguish a repeat visitor from a new one
  • Send iPhone users to the App Store and Android users to Google Play, from one printed code
  • Route by country, or by time of day
  • Split traffic between two destinations to compare them
  • Pause a code, or retire it with an explanation rather than a dead end

The dependency nobody mentions until it bites

Most services that sell dynamic codes stop resolving them when you stop paying. That is worth stating plainly, because it inverts what you thought you bought: the code on fifty thousand printed boxes becomes a dead link at the end of a billing period, and the only remedy is to keep paying indefinitely.

We took a different position, and built for it rather than promising it. Every dynamic code you have created keeps redirecting after a cancellation. What a paid plan buys is the ability to manage codes — editing destinations, the analytics, the campaign tooling — not the redirect itself.

The way that is guaranteed is structural: the service that answers a scan has no access to subscription data at all. It cannot check whether you have paid, so it cannot decide to stop.

When a static code is the better choice

Dynamic is not automatically better. A WiFi password, a contact card, a plain text label — none of those benefit from indirection, and all of them are better off with no dependency at all.

The test is simple: will the thing this points at ever move? If the answer is no, encode it directly and be done. If the answer is maybe, and the print run is large, the indirection pays for itself the first time you would otherwise have reprinted.

Questions people ask

What happens to my codes if I stop paying?

They keep redirecting. You lose the ability to change destinations, to create new dynamic codes beyond the free allowance, and to see analytics older than a week — but nothing you have printed stops working. The one exception is a custom domain, which keeps resolving for 90 days and is then released.

Does the redirect slow the scan down?

Barely. The lookup happens at the network edge close to the person scanning, and the extra hop is typically tens of milliseconds — less than the phone spends opening the browser. Nobody notices it.

Can I turn a static code I have already printed into a dynamic one?

No. The printed pattern encodes the destination directly, so there is nothing to re-point. This is the argument for using a dynamic code from the start when a print run is large or long-lived.

Do dynamic codes look different from static ones?

They look the same, and can be styled the same way. The pattern encodes a shorter string, which usually means a slightly simpler and therefore more robust code.

What if the service disappears?

It is the right question to ask of anything you are about to depend on. Our terms commit to at least 30 days' notice before discontinuing the service, and to publishing a way to keep existing redirects resolving if it ever came to that.

Related generators

Need to change it after printing?

That is a dynamic code — and ours keeps redirecting even if you cancel.