Static vs dynamic QR code: which one you need to print
A static QR code has the destination encoded in the pattern itself, so it can never be changed. A dynamic one encodes a short redirect, so the printed squares stay the same while the destination changes. Static lasts forever with no account. Dynamic depends on whoever runs the redirect.
Most people pick whichever one the generator they landed on happened to make. That often works out badly, because the two behave nothing alike once the thing is actually printed.
There’s one question that settles it. After this goes to print, will the destination ever need to move?
What actually differs
| Static | Dynamic | |
|---|---|---|
| Destination after printing | Fixed forever | Repointed whenever you like |
| Needs an account | No | Yes |
| Ongoing cost | None | Usually a subscription |
| Still works if the provider vanishes | Yes | No |
| Counts scans | No | Yes |
| Can be switched off | No | Yes |
| Pattern density | Follows the address length | Always short |
The first row is the one everybody knows. The fourth row is the one that catches people, and it gets its own section further down.
Why a long address makes a busier pattern
This one is worth understanding, because it changes how small you can print.
A QR code isn’t a picture of a link. It’s the link, written out in squares. So the more characters you put in, the more squares it takes.
Denso Wave, which invented the format, defines 40 versions. Version 1 is 21 by 21 modules. Version 40 is 177 by 177. The version gets picked by how much data you need to store.
A static code holding a long address with campaign tags on the end needs a bigger version. Bigger version, more modules, and at the same printed size each square gets smaller. Smaller squares are harder for a cheap camera in bad light.
A dynamic code only ever holds a short redirect. The real destination can be as long and ugly as you like, because it never goes in the pattern. So the printed squares stay chunky.
That’s a printing advantage rather than a marketing one. On a poster it makes no difference. On a wine label or a parking sign it makes quite a lot.
What doesn’t differ
Worth clearing up, because a lot of people assume dynamic means better made.
Both scan identically. Both can carry a logo in the middle, within the same limits. Both can be recolored and restyled. Both pick from the same four error correction levels, so both survive the same amount of scuffing and rain.
Dynamic isn’t a higher quality code. It’s the same format holding a different kind of address.
When a static code is the right answer
Static is the better choice more often than the industry likes to admit. Reach for it when:
- The destination is genuinely permanent.
- You don’t want an account, a login or a renewal date.
- Nobody is going to ask how many people scanned it.
- It needs to still work in ten years, whatever happened to the company that made it.
A brass plaque in a museum pointing at an exhibit page. The wifi details on a card in a holiday rental. A phone number on the side of a van. None of those destinations are moving, and none of them are worth a subscription.
There’s also a quiet argument for static on anything that outlives its owner. A code cast into a park bench should not need somebody to keep paying a bill.
When a dynamic code earns its keep
Dynamic pays for itself when reprinting is the expensive part. Reach for it when:
- The destination will move, or you’re not sure yet.
- You’re printing thousands, or printing onto something costly.
- You want to know whether anyone is scanning at all.
- You need to be able to turn it off.
A festival prints lanyards in March for an event in August, and the schedule page moves three times before the gates open. A gallery runs a seasonal trail where the codes stay on the wall and the content behind them rotates. In both cases the paper is fixed and the destination is not.
The scan count matters more than people expect. A static code tells you nothing, so a campaign that quietly failed looks exactly like one that quietly worked.
The part that rarely makes it onto a comparison page
A dynamic code isn’t self contained. The squares point at somebody’s server, and everything downstream depends on that server answering.
Three ways that ends badly, and all three happen:
- You stop paying. The codes die on the schedule of a billing cycle.
- The provider shuts down. Small QR companies appear and disappear constantly.
- The provider gets bought. New owner, new pricing, and sometimes the old short links simply stop resolving.
Every one of those turns printed material into dead paper. Static carries none of that exposure, because there is nothing in the middle to fail.
So the real trade isn’t only whether the destination might move. It’s which risk you’d rather hold: the cost of a reprint, or a redirect you don’t control.
There is a way to hold neither, and it’s the single most useful thing to check before you commit. Ask whether the short link can sit on a domain you own. If the redirect runs on your own domain, the provider is replaceable. You point the domain somewhere else and the printed codes carry on working. If the redirect runs on the provider’s domain, your printed material has the same life expectancy as their company.
That question is worth asking before the first thousand get printed, not after.
The free dynamic code trap
Free dynamic codes deserve their own warning, because they combine the worst of both columns.
The pattern goes like this. A generator offers dynamic codes free with no card. You print. Months later the free tier grows a scan limit, or the codes stop resolving unless you upgrade.
The leverage is the print run. Once your code is on ten thousand flyers, a subscription costs less than a reprint, and everyone involved knows it.
That’s not an accusation aimed at anybody in particular. It’s just what happens when you pay the switching cost and somebody else picks the timing.
If a free dynamic code is still what you want, check two things before printing. Can the redirect move to a domain you own? What happens to codes that already exist if you stop paying? Both answers belong on a pricing page. If neither is there, you have your answer.
Two questions, in order
- Will the destination ever need to move? If not, use static. It’s free, it’s permanent, and you can stop reading.
- If yes, whose domain is the redirect on? Yours means low risk. Theirs means you’re renting the life of everything you print.
Everything else, the styling, the logo in the middle, the analytics dashboard, is a preference. Those two are the decision.
What we make
QRFLOW.codes makes both kinds. Static codes are free, unlimited and need no account, because a permanent code shouldn’t come with a bill attached. Saved codes on a paid plan are dynamic, and they can run on your own domain for the reason above.
They can also be created and repointed from an API, or by asking an AI assistant through MCP. The launch announcement covers how that side works.
Whichever you end up choosing, choose it before the print run. The one thing neither kind can do is change what is already on the paper.