Explainer

Static vs Dynamic QR Codes

Where the destination lives is the only real difference. Which to print, what static is genuinely better at, and the dependency dynamic asks you to accept.

Daniel VSeptember 7, 20265 min read

Need it editable? Dynamic QR code generator 10,000 free codes, no sign-up. Need a plain one? Static QR generator.

The only difference that matters

A QR code is a way of writing a string in black and white squares. In a static code, that string is your final URL. The pattern is the address. Print it and the destination is fixed for the life of the paper.

In a dynamic code, the string is a short link pointing at a redirect service, and the real destination is a record on that service. The pattern never changes. The destination is a field you can edit, including after ten thousand copies have shipped.

Everything else follows. Scan tracking exists on dynamic codes because the request passes through a server that can count it. Device routing exists because that server can look at who is asking. Neither is possible on a static code, not because of a missing feature but because nothing is in the middle to do it.

The question that decides it

Ignore feature lists and ask one thing: if the destination had to change tomorrow, could you replace every copy of this code?

A code on a slide you will regenerate anyway: yes, replace it, static is fine. A code taped inside a cupboard for the house WiFi: yes. A code you are about to print on 50,000 cartons, or on a yard sign, or on a van: no. That is the whole decision, and it is usually obvious once asked in those words.

The reason it gets asked too late is that the cost of being wrong is invisible at print time and unavoidable afterwards.

What static is genuinely better at

Static codes depend on nobody. No account, no service, no company that could close. For WiFi and vCard codes they also carry the data itself rather than a link to it, so they work with no internet at all. A WiFi code should almost always be static: the password is the payload, and there is nothing to redirect to.

The independence argument is real but narrower than it sounds. A static code fails the moment its URL does, and URLs rot faster than companies fold. A static code pointing at a dead campaign page is exactly as broken as a dynamic code whose provider vanished, with one difference: the dynamic one could have been repointed the day the page moved.

The dependency you are taking on, and how to check it

Choosing dynamic means trusting a redirect to keep resolving. That is a real commitment and it deserves more scrutiny than the marketing page gives it. Before printing anything, check three things about whichever provider you pick.

  • Does the free tier deactivate codes? Several do, after a trial window or a scan cap. A code that stops redirecting is worse than one that was never dynamic.
  • What happens when you stop paying? Some plans switch codes off with the subscription. Toolember codes keep redirecting after a subscription ends.
  • Are short ids reused? If a deleted code's id can be handed to someone else, an old printed code could one day point at a stranger's destination. Toolember never reissues one.

We compared five providers on exactly these points in free dynamic QR code generators compared, using each vendor's own pricing page.

You cannot convert one after printing

A printed static code cannot become dynamic. The URL is in the pattern, so a different destination means a different pattern, which means replacing every copy.

The workaround people reach for is to point the static code at a URL on their own domain and redirect from there. That works, and it is a dynamic QR code assembled by hand: you now maintain the redirect, the uptime and the analytics yourself, forever, for a code you printed once. Worth it if you already run that infrastructure, and rarely worth it otherwise.

Frequently Asked Questions

What is the actual difference between a static and a dynamic QR code?▾
Where the destination lives. A static code encodes the final URL directly in the black-and-white pattern, so the pattern is the address. A dynamic code encodes a short redirect link instead, and the real destination is a record on a server that you can edit. Both are ordinary QR codes to a scanner; the difference is entirely on your side.
Does a dynamic QR code scan differently?▾
No. Any camera or scanner app reads both identically, and neither needs an app. A dynamic code adds one server hop between the scan and the destination, which is imperceptible in practice, and it means the code stops working if the redirect service disappears. That is the real trade: you gain editability and take on a dependency.
Is a static QR code more reliable long-term?▾
In one narrow sense, yes: it has no dependency on anyone staying in business. But it fails the moment the URL it encodes stops working, and URLs change far more often than services vanish. A static code pointing at a dead page is just as broken as a dynamic code whose provider closed, and you cannot fix the static one.
Which one should I print on packaging or signage?▾
Dynamic, in nearly every case where the code is printed at volume or will be up for a long time. The test is simple: if the destination changed tomorrow, could you replace every copy? If the answer is no, the destination must be editable. Packaging, signage, vehicle livery and printed manuals all fail that test.
When is a static code the better choice?▾
When the destination genuinely cannot change and you want zero dependency: a WiFi network code taped inside a cupboard, a vCard on your own business card, a link on a slide you will regenerate anyway. Static also encodes the data itself for WiFi and contact codes, so it works with no server at all.
Do dynamic QR codes expire?▾
That depends entirely on the provider, and it is the thing to check before printing. Several free plans deactivate codes after a trial window or a scan cap, which turns a printed code into a dead one. Toolember codes keep redirecting after a subscription ends, and a deleted code’s short id is never reissued to anyone else.
Can I convert a static code to a dynamic one later?▾
Not the printed one. The URL is in the pattern, so converting means generating a different code and replacing every copy. The nearest workaround is to make the static code point at a URL on a domain you control, and redirect from there, which is a dynamic code built by hand with worse tooling.