Static vs. dynamic QR codes
Both look the same on paper. The difference is where the content lives, and that decides who can switch the code off.
Static: the content is in the code
A static QR code stores its content directly in the pattern of modules: a web address, a Wi-Fi password, a contact card or bank details. A phone decodes the pattern and acts on it. No server is involved, so there is nothing that could be switched off later.
The downside: the content cannot change after printing. If the web address in the code moves, you need a new code. Static codes also cannot count scans, because nobody sees them happen.
Dynamic: the code points to a redirect
A dynamic QR code contains a short link to a server of the provider. When someone scans it, that server forwards the visitor to the target you set. You can change the target at any time without reprinting, and the provider can count the scans.
The price of this is dependence. The printed code works only as long as the provider keeps forwarding it. Whoever runs the redirect decides what a scan leads to.
Why some printed codes stop working
Some providers offer dynamic codes in a free trial. When the trial ends, or when a subscription is not renewed, the redirect is switched off or replaced with a page that asks the owner to pay. Codes that are already on menus, flyers or packaging then lead to that page instead of the target.
This is legal if the terms say so, and it is often described in the terms. It still catches people out, because the code was printed while it worked. Subscriptions that renew automatically and long notice periods add to the frustration.
What to check before printing a dynamic code
Read the terms of the provider with these questions in mind:
- What happens to my codes when the trial or the plan ends? Do they keep forwarding, and to which target?
- Does the plan renew automatically, and how far in advance do I have to cancel?
- Can I use my own domain for the short links? Then you can move to another provider without reprinting.
- Can I export my codes and their targets?
| Static | Dynamic | |
|---|---|---|
| Where the content is | In the code itself | On the provider's server |
| Change after printing | No, print a new code | Yes, change the target online |
| Scan statistics | No | Yes, counted by the provider |
| Works without the provider | Yes | No, the redirect must run |
| Cost here | Free, no account | Coming soon |
How we handle it
Static codes are free here, without an account and without a limit. They cost us nothing to run because scanning them never reaches our server.
Dynamic codes will cost money from the start, without a trial that ends in a dead code. Money comes from what you want before printing: changing the target later, statistics, your own domain, larger volumes. Not from a code that has already been printed.
We never switch off a redirect to make you pay. When a plan ends, every dynamic code keeps forwarding to its last target for as long as this service exists. Only editing and statistics stop.
Dynamic codes are coming soon. Until then, the generator on this site creates static codes.
Create a static QR codeQuestions
Can I turn a static code into a dynamic one later?
No. The content of a static code is fixed in the printed pattern. If you expect the target to change, either print a dynamic code or link to a page on your own website whose content you can update.
Do dynamic codes scan worse than static ones?
A dynamic code usually contains a short link, so it often has fewer modules than a static code with a long address. Scanning it takes one extra request to the redirect server, which adds a short moment before the target opens.
Is a static code with a link to my own website a good alternative?
Often, yes. If the code points to a page on your domain, you can change that page whenever you like. You only lose scan statistics unless your website counts visits itself.
What does the guarantee not cover?
Redirects to phishing or malware are blocked; that protects the people who scan the code and is stated in the terms. The guarantee also ends if this service as a whole stops, which is why it does not promise more than that.