Static vs dynamic QR codes: which should you use?
Every QR generator asks you to choose between static and dynamic, and most of them lean hard on dynamic. The technical difference is one sentence; the consequences — cost, print density, and whether your code still works in two years — are the whole decision.
The one-sentence difference
A static QR code encodes your actual data in the pattern itself — the full URL, the WiFi credentials, the vCard. Scan it and the phone reads the data directly; no third party is involved. A dynamic QR code encodes something else: a short redirect URL owned by the QR service. The phone fetches that URL, the service looks up where you currently want people sent, and forwards the scan.
Everything that matters about the choice falls out of that indirection. The redirect is what lets a dynamic code be edited and tracked — and it is also a dependency: a server that has to stay up, under a subscription that has to stay paid, run by a company that has to stay in business, for as long as your printed material exists.
What dynamic buys you
Fairness first, because the dynamic model is not a scam — it is a trade. The redirect layer genuinely provides:
- Editability after printing. Point the code at a new destination without reprinting. If the destination changes weekly — event schedules, rotating promotions — this is real value. (A coupon is not this case, even though it expires: the coupons guide explains why the expiry belongs in your till, not the code. Nor is a for-sale sign, the commonest repointed code in the wild: the real-estate-signs guide splits it into a throwaway per-listing rider and a permanent agent code instead.)
- Scan analytics. Counts, timestamps, rough location, device split — because every scan passes through the vendor’s server, the vendor can count it.
- A shorter payload. The redirect URL is short, so the pattern is sparser than a long URL would produce — relevant if you are printing very small.
If you need the first item — genuinely need it, at print scale, with destinations you cannot control — dynamic is the right tool, and the subscription is the honest price of the service.
What dynamic costs you
- An expiry date. When the trial ends or the card behind the subscription fails, the redirect dies — and every printed copy of the code dies with it, on menus, flyers and business cards you cannot recall. The failure modes are catalogued in do QR codes expire?
- A ceiling on success. Plans are metered in scans as well as months, so the code can be switched off for being popular — a threshold crossed on your busiest day rather than on a date you could have diarised. That failure shape is worked through in how many times a QR code can be scanned.
- A recurring bill for a one-time artefact. Typical dynamic plans run $5–40 a month, forever, to keep a redirect alive for something you printed once.
- A middleman on every scan. Each scan is a round-trip through the vendor’s server: slower on weak signal, logged by a company your reader never chose, and a single point of failure even while the subscription is healthy. A redirect service having a bad day is one of the six causes in why your QR code isn’t scanning.
- Lock-in by design. The vendor owns the redirect domain, so you cannot migrate a printed dynamic code to another provider. The moment the code is on paper, your negotiating position is gone.
The static answers to dynamic’s two features
The two genuine dynamic features have static-world equivalents that cover most real cases:
- Tracking → UTM parameters. Encode
yoursite.com/menu?utm_source=table-tentand the analytics you already run show every scan. No middleman, no subscription, and the counting happens on a domain you own. - Editability → redirect on your own domain. Encode
yoursite.com/qrand change what that page does whenever you like. That is exactly the dynamic architecture — except the party that owns the redirect is you, and it costs nothing beyond hosting you already pay for.
The honest decision rule: if the destination changes often and you cannot host a redirect yourself, pay for dynamic with eyes open. In every other case — menus, WiFi cards, business cards, packaging, anything with a stable destination — static is the safer artefact, because it has no moving parts.
Where each type actually belongs
- Restaurant menu — static, pointed at a menu URL on your own domain; update the menu page, never the code.
- Guest WiFi — static, necessarily: the credentials live in the pattern and the phone joins the network directly, no internet round-trip involved.
- Business card — static vCard: the card sits in wallets for years, which is longer than most QR subscriptions survive. The argument is laid out in how to put a QR code on a business card.
- A two-week campaign with rotating offers — dynamic earns its keep, or a static code pointing at a campaign page you edit.
- Franchise material printed once, localised per scan — dynamic; per-scan routing is the one job static genuinely cannot do.
One practical note for the static route: your actual data is usually longer than a redirect stub, so the pattern is denser. That is handled by printing at the right size — what size should a QR code be for print? gives the module-size floor that keeps a dense static code scannable.