Guide
Static vs dynamic QR codes: which one do you need?
Every QR code generator offers a choice between static and dynamic, and most explain it badly. The difference is not in how the code looks or scans. It is in what the pattern contains, and that decides what you can still change after the code is printed, what you can measure, and what you depend on.
What the pattern contains
A QR code is a way of writing text so that a camera can read it. A static code writes the final content into the pattern itself: the full web address, the Wi-Fi password, the text of a contact card. The phone decodes the pattern and acts on it directly. Nothing else is involved, and nothing else can be: the content is the pattern, so changing one means changing the other.
A dynamic code writes a short web address into the pattern instead, on the domain of the service that made the code. The phone opens that short address, the service looks up where the code should go right now, and sends the phone on to the real destination. The pattern never changes; the lookup behind it can. That one indirection is the whole difference, and everything below follows from it.
What that means after printing
- A static code is final. If the page moves, the price list changes or there is a typo in the address, every printed copy is wrong and has to be reprinted.
- A dynamic code can be redirected at any time. The poster, the label or the menu keeps the same code; you change the destination in a dashboard and the next scan goes to the new place.
- A static code cannot be counted. The phone goes straight to the destination; nothing in between knows a scan happened.
- A dynamic code is counted on the way: the time, the country and city, the kind of device. You learn which placement works and which does not.
- A static code works with no service at all, forever, as long as the destination exists. A dynamic code depends on the service that resolves the short link, so it matters who that is and what they promise.
Size and reliability
There is a practical difference too. The more characters a code holds, the more modules it needs, and the denser it gets. A long address with campaign parameters can run to well over a hundred characters and produce a fine-grained code that must be printed large to scan reliably. A dynamic code holds a short link of a few dozen characters, so it is coarser, prints smaller, and tolerates a dirty surface or a cheap print better. For a small label or a code read from a distance, that is often the deciding argument on its own.
When static is the right choice
Choose static when the content truly never changes and you want nothing in between. A Wi-Fi code is the clearest case: it connects the phone to the network directly, never touches a server, and a dynamic version would add nothing. A serial number, a plain text note, a code that must work on a device with no internet connection, or a code for a personal project where you do not want to rely on any service: static. If you have no interest in counting scans and the destination is stable, static is simpler and free of any dependency.
When dynamic is the right choice
Choose dynamic whenever the code will be printed on something that outlives the page behind it, or whenever you want to know whether anyone scans it. Packaging, signage, business cards, table tents, vehicle lettering, name badges, event material and anything produced in volume all fall on this side: the print run is the expensive part, and a dynamic code protects it. The same goes for anything you want to measure, because a dynamic code is the only kind that can be.
Dynamic also opens things a static code cannot do at all: sending a scanner to a different page depending on their language, device, location or the time of day; making a code work only within a set distance of a place; or putting a short form in front of the destination. Those are features of the lookup, not of the pattern.
The question to ask a dynamic code provider
Because a dynamic code depends on a service, ask what happens to a printed code when you stop paying, downgrade or let a free trial lapse. Some generators expire codes after a trial period or a number of scans and show a paywall page to whoever scans them afterwards, which is the usual reason a printed code "stops working". QR Solutions does not do that: a printed code never expires on any plan, including Free. A code that no longer fits your plan is frozen, not switched off: it keeps redirecting to its last destination, and editing and statistics come back when it fits again. Read the equivalent sentence in any provider's terms before you print.
A plain rule
If you will print it and the page behind it may change, or you want to count scans: dynamic. If the content is fixed forever, you want no measurement and no dependency: static. If in doubt, make a dynamic code: it costs nothing to start, and the case where you later wish a printed code could be redirected is far more common than the reverse.
Frequently asked questions
Can a phone tell static and dynamic codes apart?
No. Both are ordinary QR codes and scan with any camera app. The only visible hint is that a dynamic code is usually coarser, because a short link needs fewer modules.
Can I convert a static code I already printed into a dynamic one?
No. The destination of a static code is part of the pattern. Make a dynamic code for the next print run and leave the old one as it is.
Is a dynamic code slower to open?
By a fraction of a second, for the redirect. The visitor lands on your page; the short link is not shown as a page of its own.
Do dynamic codes cost money?
Not necessarily. On QR Solutions the Free plan holds three dynamic codes with scan counts, for as long as you like, with no card.
Can a dynamic code be a Wi-Fi code?
A Wi-Fi code is always static in effect: the phone joins the network directly and no server is involved, so it cannot be counted or redirected.