Static vs Dynamic QR Codes: Which Should You Use?
There is no such thing as a dynamic QR code at the symbol level — every QR code is static, and a "dynamic" one is a static code encoding a redirect URL somebody else operates. Once that is clear, the choice stops being about features and becomes a question about dependency: what happens to your printed codes if you stop paying, and who do you need to still be in business in three years.
The Short Answer
- Every QR code is static. ISO/IEC 18004, the standard that defines the symbol, has no notion of a changeable code. The pattern of squares encodes a fixed string and always will.
- A "dynamic QR code" is a static code encoding a short redirect URL that a provider operates. You edit the redirect's destination; the printed symbol never changes.
- So the real question is not static or dynamic. It is whether you want a printed thing that works on its own, or a printed thing that works as long as a redirect keeps answering.
- Static if the destination is fixed or you own the redirect. Dynamic if the destination genuinely may change, you need per-code analytics, or you are managing codes at volume.
- The middle path beats both for most people: point a static code at a URL on your own domain and redirect it yourself. Editable destination, no subscription, no provider to outlive.
Why the Naming Causes Most of the Confusion
"Dynamic" sounds like a property of the code. It is not. It is a property of the service behind the code, and nothing about the printed symbol differs between the two kinds. Two codes side by side, one static and one dynamic, are both fixed arrangements of light and dark modules encoding a fixed string. There is no changeable mode in the specification, no rewritable region, nothing in the symbol that a provider reaches back into.
What differs is only what the string says. A static code's string is your destination. A dynamic code's string is a short URL pointing at a redirect that a provider controls, which then forwards to wherever you have currently set it. Edit the setting and new scans land somewhere new — because the redirect changed, not the code.
This matters practically, because once you see it you can predict the failure modes without being told them. If the thing that changes is a redirect somebody operates, then the code lives exactly as long as that redirect answers. We cover what a repointable destination means for the person doing the scanning, and how to tell by looking at a payload, in can a QR code be changed after it's printed?
What a Static QR Code Is
A static QR code encodes the destination data — a URL, text, Wi-Fi credentials, contact details — directly into the pattern. Once generated, the content is fixed.
- Free to create — no subscription or service needed
- No external dependency — nothing in the middle that can stop answering
- Works for non-URL payloads — Wi-Fi, vCard, calendar events and the rest only exist as static codes, because there is no destination to redirect to
- No scan analytics from the code itself — though you can get most of the value from the destination side
- Longer payload, denser symbol — a long URL means more modules, which matters at small print sizes
What a Dynamic QR Code Is
A dynamic QR code encodes a short redirect URL — something like qr.example.com/abc123 — which forwards to your real destination. You change that destination from a dashboard.
- Editable destination — repoint without reprinting
- Per-code analytics — scan counts, timestamps, coarse location, device type
- Shorter payload — fewer modules, so the symbol survives being printed small
- Requires a live service — usually a subscription
- Needs an internet connection at scan time — the redirect has to resolve
- Dies when the redirect dies — a lapsed subscription or a retired provider kills every printed copy at once
The Comparison, Honestly
| Property | Static | Dynamic |
|---|---|---|
| Cost | Free, once | Recurring, indefinitely |
| Destination editable | Only if you own the URL it points at | Yes, from a dashboard |
| Per-code scan analytics | No — but UTM tags get close | Yes |
| Works with no network | Yes, for Wi-Fi, vCard, text | No |
| Third-party dependency | None | The provider, permanently |
| Symbol density for a long URL | Higher — needs a larger print | Lower — prints smaller |
| What kills it | The destination going away | The destination or the redirect going away |
| Can you move providers after printing? | N/A | Not unless the short domain is yours |
The last row is the one that rarely appears in a comparison table and is the most expensive to learn late. If the redirect domain belongs to your provider, then your printed codes are only portable by reprinting them. That is not a reason to avoid dynamic codes; it is a reason to know what you are signing up to before the print run.
What a Dynamic Code Costs Over Five Years
A subscription is easy to approve monthly and hard to evaluate over the life of a printed asset. Signage and packaging routinely stay in service for years, so the honest unit of comparison is the lifetime of the print run, not the month.
The arithmetic is trivial but worth seeing. Substitute whatever your provider actually charges — these are illustrative figures, not quoted prices:
| Monthly | 1 year | 3 years | 5 years |
|---|---|---|---|
| $5 | $60 | $180 | $300 |
| $15 | $180 | $540 | $900 |
| $49 | $588 | $1,764 | $2,940 |
Set that against the thing it is buying. If the destination will change twice in five years, you are paying the five-year figure to avoid two reprints. Sometimes that is obviously worth it — a reprint of 40,000 cartons is not cheap. Often it is not: a static code pointing at a page on your own domain lets you change the destination as many times as you like for the cost of the domain you already own.
The part that does not show up in the table is that the spend never finishes. Stop paying in year six and the codes printed in year one stop working. That is the actual commitment: not the monthly figure, but an obligation with no end date attached to a physical object you have already distributed.
The Question That Actually Decides It
Work through these in order and the answer usually falls out before the end.
- Is the payload a URL at all? Wi-Fi credentials, contact cards and calendar events cannot be dynamic in any meaningful sense — there is nothing to redirect. Static, necessarily.
- Could the destination realistically change while the print is still in service? If honestly no — your homepage, your Google Maps pin, a stable document — static, and stop here.
- Do you control a domain? If yes, point the static code at a URL on it and redirect server-side. You get editability and keep ownership. This is the right answer far more often than the market implies.
- Do you need per-code analytics specifically? UTM parameters on the destination give you source attribution in your own analytics for free — see how to track QR code scans for free. If you need scan counts per physical placement across dozens of codes, that is where a dynamic platform genuinely earns its fee.
- Are you managing codes at volume, with people who are not you? Dashboards, permissions and bulk editing are real operational value. This is the strongest honest case for paying.
If you take route 3, our UTM link builder will assemble the tagged destination, the QR code generator will encode it, and the QR code link checker will confirm the redirect chain actually resolves where you think it does before you commit it to print.
When Static Is the Right Answer
- Wi-Fi access — the credentials are the payload; there is no redirect version of this
- Contact sharing — vCard and MeCard details encoded directly
- A stable link — homepage, map pin, a document that is not moving
- Internal operations — asset tags, equipment labels, document references, inventory
- Anything that must work without a network — a redirect cannot resolve in a basement or on a plane
- Anything that must still work in ten years — no provider has to survive for a static code to keep working
When Dynamic Is the Right Answer
- Campaigns with a planned destination change — the same poster pointing somewhere new next quarter
- Long-lived packaging — print runs that outlive the pages they point at
- Per-placement measurement — you need to know which of twelve locations performed, individually
- Volume and delegation — many codes, many editors, central control
- Very small print areas — a short redirect keeps the module size scannable where a long URL would not fit. Check it with the print size calculator rather than guessing
Three Things a Dynamic QR Code Is Not
Each of these is a common and costly misreading of what a subscription buys.
It is not a single-use or rotating ticket. This is the most consequential confusion, because people buy a dynamic QR subscription expecting it to stop ticket sharing and it does nothing of the kind. A dynamic marketing code is one fixed symbol pointing at an editable redirect — every copy of it is equally valid, forever. A rotating ticket barcode is the opposite: the symbol itself regenerates, continuously. If your problem is people forwarding screenshots of a ticket, see can someone screenshot your ticket QR code? — the defence lives in the door check, not in the code.
It is not more secure. If anything it is less legible to the person scanning: a static code shows its destination in the payload, while a dynamic one shows a short domain that reveals nothing about where it will send you. That is the same property phishing relies on.
It is not required in order to measure anything. Scan-level analytics and destination-level analytics are different products, and most people asking for the first actually want the second, which is free.
Can You Convert Between Them?
Not after printing. A static code has the destination baked into the pattern — there is no redirect in the middle to repoint, so making it editable means generating and reprinting a new code. Equally, a dynamic code cannot be made independent of its provider after the fact: the short URL in the symbol is theirs.
Which is why the decision belongs before the print run, and why route 3 above is worth the ten minutes it takes to set up. A static code pointing at your own domain is the only version of this that you can change your mind about later. You can inspect exactly what any existing code encodes with the QR code payload decoder — if the payload is a short URL on a domain you do not recognise, it is dynamic and somebody else holds the redirect.
Making the Right Choice
For most personal and small-business uses — Wi-Fi sharing, contact cards, a link to your own site — static is the better choice, and the reasoning is not mainly about cost. It is that a static code has no renewal date and nobody else's business continuity in its dependency chain.
For marketing teams running measured campaigns at volume, or packaging that will outlive the pages it points at, dynamic codes earn their fee — provided you go in knowing that the subscription is open-ended and that portability depends on whose domain is in the symbol. If the answer to that last question matters to you, ask it before signing, not at renewal.
Frequently Asked Questions
What is the difference between a static and a dynamic QR code?
A static QR code has the destination encoded directly in its pattern, so it can never be changed. A dynamic QR code encodes a short redirect URL owned by a provider, which forwards to your real destination — so you can change where it points without reprinting the code.
Is a dynamic QR code a different kind of QR code?
No. ISO/IEC 18004, the standard that defines the symbol, has no changeable mode — every QR code encodes a fixed string. A "dynamic" code is an ordinary static code whose string happens to be a short redirect URL that a provider operates. The symbol never changes; only the redirect's destination does.
Can I move a dynamic QR code to a different provider without reprinting?
Only if the short domain in the symbol is yours. If the redirect runs on the provider's own domain, that domain is printed into every copy of the code, so leaving the provider means generating and reprinting new codes. Using a redirect on a domain you control avoids this entirely.
Does a dynamic QR code stop people sharing a ticket?
No, and this is an expensive misunderstanding. A dynamic code is one fixed symbol pointing at an editable redirect, so every copy of it stays equally valid. Stopping a shared ticket needs a door check that records each code as used — the symbol cannot do it, whatever you pay for the subscription.
Which type is safer to scan?
A static code is more transparent, because its payload shows the actual destination before you open it. A dynamic code shows only a short domain that reveals nothing about where it will send you, which is the same property phishing campaigns rely on. Neither is inherently malicious, but one can be inspected and the other cannot.
Do static QR codes expire?
No. A static code contains the destination itself, so it keeps working for as long as that destination exists. There is no provider in the middle who can switch it off, which is why static codes suit permanent uses such as WiFi credentials or contact details.
Why did my QR code stop working?
Almost always because it was dynamic and the subscription behind it lapsed, or the provider retired the redirect. When the redirect service stops answering, every printed copy of that code dies at once — even though the code itself is undamaged.
Can I track scans on a static QR code?
Not through the code itself, but you can get most of the value by adding UTM parameters to the destination URL before generating the code. Your analytics then attribute those visits to that specific code, at no cost and with no dependency on a provider.
Are dynamic QR codes worth paying for?
They earn their cost when the destination genuinely may change after printing, when you need per-code scan analytics, or when you are managing codes at volume. For a fixed destination on a small run, a static code is simpler and carries no ongoing risk.
Can I convert a static QR code into a dynamic one?
Not after printing — the destination is baked into the pattern. What you can do is point a static code at a URL you control, such as a page on your own domain, and change the redirect there. That gives you editable destinations without a subscription.