Static vs dynamic QR codes
Static QR codes
The destination is encoded into the pattern itself. Nothing sits between the scanner and the content, so the code keeps working for as long as its destination does, with no account, no fee and no third party in the path.
Dynamic QR codes
The pattern encodes a short link owned by a redirect service, which forwards each scan to a destination you can change later. That indirection is what buys editing and analytics, and it is also what the code now depends on.
Side by side
| Criterion | Static QR codes | Dynamic QR codes |
|---|---|---|
| Where the data livesThis single difference produces almost every other row in this table. | Inside the printed pattern, permanently | On the provider's server, behind a short link |
| Can the destination be changedThe one genuine advantage, and it only matters if the target actually moves. | No — a new destination means a new pattern | Yes, from a dashboard, without reprinting |
| Ongoing cost | None. There is nothing to pay for after printing | A subscription, typically per code or per scan volume |
| What happens if the provider disappearsRare, but it is a single point of failure across your entire print run. | Nothing. The code has no dependency to lose | Every printed code stops resolving at the same moment |
| Scan analyticsLink parameters recover most of this if you already run web analytics. | None from the code itself; use link parameters instead | Counts, timestamps, coarse location and device breakdown |
| Pattern densityA real advantage for long payloads printed small, such as contact records. | Grows with the length of the payload you encode | Always short, because the short link is a fixed small size |
| Privacy for the person scanning | The scan goes straight to the destination, unlogged | The redirect logs the request before forwarding it |
| Works for non-link payloadsA Wi-Fi credential cannot be redirected, so this rules dynamic out entirely. | Yes — Wi-Fi, contacts, calendar events, payment strings | No. Redirection only makes sense for web addresses |
| Offline behaviour | Non-link payloads resolve with no connection at all | Always requires a connection, even before the destination loads |
| Setup effort | Type the content, download the file | Create an account, configure the code, manage it thereafter |
The short answer
Which one should you use?
Choose static unless you can name the specific thing you need indirection for. Editing a printed destination and counting scans are the only two capabilities dynamic codes actually add, and both are worth paying for in a campaign where the target genuinely moves or the spend has to be justified. Everything else — Wi-Fi credentials, contact cards, menus that live at a stable address, payment identifiers, links on business cards — is better served by a pattern that carries its own data and cannot be switched off. The failure mode of a static code is that a page moves and you reprint. The failure mode of a dynamic code is that a company you do not control stops serving the redirect, and every piece of print you ever produced becomes inert at once.
Choose Static QR codes when
- The payload is not a web address — Wi-Fi credentials, a contact card, a calendar event or a payment string cannot be redirected.
- The code goes on something long-lived that you will not reprint, such as signage, equipment labels or a laminated menu.
- You want the code to keep working with no account, no renewal and no company in the middle of it.
- The destination is a stable address you control, so changing it is a matter of updating the page rather than the code.
Choose Dynamic QR codes when
- The destination genuinely moves — a seasonal campaign landing page, a rotating offer, or a link that is not finalised at print time.
- You need scan counts attributable to a specific physical placement, and cannot get them from link parameters.
- The payload would otherwise be long enough to make the pattern too dense for the printed size you are stuck with.
- Print volumes are high enough that reprinting to fix a wrong destination would cost more than years of subscription.
Common questions
Can I convert a static QR code into a dynamic one later?
Not in any meaningful sense. The pattern is determined by the characters encoded into it, so switching to a redirect link produces a completely different pattern that has to be reprinted. What you can do is plan ahead: point a static code at a short, permanent URL on a domain you own, and handle any future redirection on your own server. That gives you the editability of a dynamic code without handing the dependency to a third party.
Do dynamic QR codes expire?
The pattern does not, but the redirect behind it does. Providers routinely disable codes when a subscription lapses, and free tiers often cap total scans or expire after a trial period. Once the redirect stops resolving, the printed code leads nowhere, and there is nothing you can do at the print end to recover it. This is the risk that people underestimate, because it appears months after the print run when nobody is watching.
Are dynamic codes smaller than static ones?
For long payloads, yes, and it can be decisive. A short link is a fixed thirty characters or so, while a full contact record might be three hundred, and the difference shows up as a much denser grid that has to be printed larger to stay scannable. For a payload that is already short — most URLs, a Wi-Fi credential — the difference is negligible and not worth a dependency.
How do I track scans without using a dynamic code?
Append campaign parameters to the URL you encode, then read them in whatever web analytics you already run. A distinct parameter per placement tells you which poster or table tent produced the visit, which is the question people usually want answered. What this cannot give you is a count of scans that did not result in a page load, and it obviously does not apply to payloads that are not links.
Is one of them better for scanning reliability?
Neither is inherently more reliable to decode, because the pattern obeys the same rules in both cases. The practical difference is indirect: dynamic codes are always short, so they produce sparser grids that tolerate small printing better, while a long static payload can force a dense grid. If reliability is the concern, shortening the static payload achieves the same thing without the subscription.
Try it in a generator
Other comparisons
- PNG or SVG for a QR code?SVG scales to any size without softening module edges. PNG is a fixed grid of pixels that every tool accepts. Which one to send depends on where the code lands.
- QR code vs barcodeA retail barcode identifies a product for a till. A QR code carries arbitrary text for a phone. They solve different problems and are rarely interchangeable.
- vCard vs MeCard contact codesvCard carries every contact field but encodes long. MeCard is far more compact and loses detail. Which one belongs on a business card depends on the print size.