Dynamic QR codes: change where a printed code points
A dynamic code is one you can repoint after it is printed. That is the whole difference, and it is the only one that matters once the ink is dry.
A dynamic QR code encodes a short redirect URL instead of your destination. The phone that scans it asks that redirect where to go, and you decide the answer, which means you can change the destination after the code is printed without touching the print. A static code encodes the destination directly into the pattern, so the image is the link and the link is permanent.
If you have seen this called an "editable" QR code, that is the same thing described by what it does for you. Dynamic is the technical word; editable after printing is the reason to want one.
The decision is worth getting right once, because it is made before the print run and cannot be revisited afterwards. Everything else about a QR code can be fixed later. This cannot.
What the redirect buys you
Three things follow from the redirect, and they are the entire case for a dynamic code.
You can repoint it. A menu goes seasonal, a listing sells, a campaign URL is retired, a PDF moves to a new host. With a dynamic code you edit the destination and every code already printed starts resolving to the new place. With a static code the only fix is a reprint, and the cost of that scales with how well the first print run went.
You can count scans. The redirect is a request to a server, so it can be recorded. A static code sends the phone straight to your destination with nothing in between, which is why no provider can offer analytics on one. What that data can and cannot tell you is its own subject, covered in QR code tracking and scan analytics.
The printed code is easier to scan. This one is rarely mentioned and it is the most concrete. A QR code's pattern grows with the length of what it encodes, so a short redirect produces a sparser code with physically larger squares than a long destination URL does at the same printed size. Larger squares are what a phone camera resolves from further away and in worse light. The table below is computed from the library this site renders with, not estimated.
The catch, stated plainly
A dynamic code depends on the redirect continuing to answer, and that is a real dependency rather than a footnote. Two versions of it are worth separating, because only one of them gets discussed.
The version everybody mentions is billing. Some providers stop resolving dynamic codes when a trial ends or a subscription lapses, which turns a printed sign into a dead end and makes the reprint you were avoiding compulsory. Ask what happens when you stop paying, before you print. Ours keep resolving on the free plan, indefinitely, because the redirect is the product rather than the upsell.
The version almost nobody mentions is the provider itself going away. If the company behind your redirect shuts down, every code it issued stops working at once, and no amount of paying on time protects you. There is no way to make that risk zero, but you can bound it: prefer a code whose short domain and destination you can read plainly, keep your own list of which code points where, and treat a provider that will not tell you what happens to printed codes on shutdown as having answered the question. Nothing on this page changes that trade. It is the honest price of being able to repoint at all.
When a static code is genuinely the better call: a one-off you will never reprint and never need to measure, or a payload that is not a URL at all, like a WiFi join string or a contact card, where there is nothing to repoint. Our free generator makes static codes for exactly those cases.
Why a shorter link prints a more scannable code
| Encoded link | Chars | Version | Squares | Square at 1 in |
|---|---|---|---|---|
| Short redirect | 21 | 3 | 29 | 0.0270 in |
| Bare domain | 19 | 3 | 29 | 0.0270 in |
| Page on your site | 47 | 6 | 41 | 0.0204 in |
| Deep path to a PDF | 93 | 9 | 53 | 0.0164 in |
| That PDF plus UTM | 161 | 13 | 69 | 0.0130 in |
Source: Computed with the rqrcode library this site renders with, at our default error-correction level H. Square width includes the four-square quiet zone the QR specification requires on each side, so the bottom row needs 2.08 inches of print to match the top row's squares at 1 inch
Static and dynamic, side by side
| Static code | Dynamic code | |
|---|---|---|
| Change it later | No, reprint is the only fix | Yes, the print stays as it is |
| Count scans | No, nothing sits in the path | Yes, the redirect records each one |
| Needs no service | Yes, works forever unaided | No, the redirect has to answer |
| Squares at one size | Smaller, the full URL is encoded | Larger, a short redirect is encoded |
| Good for | One-offs, WiFi and contact cards | Anything printed on a surface |
Source: Both kinds are generated by this site: dynamic codes by the builder above, static codes by the free generator
What happens to a printed dynamic code if you stop paying, verified 17 August 2026
| Provider | Free plan | If billing lapses |
|---|---|---|
| TangoQR | Unlimited codes, all dynamic and editable | Codes keep resolving. Editing locks past 50 scans |
| Bitly | 2 QR codes a month, no scan analytics | Check their current terms before printing |
Prove it repoints, in about two minutes
You do not have to take any of this on faith, and you should not. Run the drill against the builder on this page before you commit a print run to anybody's dynamic codes, including ours.
- Make a code above, pointed at any URL you like. Download the PNG.
- Scan it with your phone. Note where it lands, and note the short URL that flashes up on the way through.
- Change the destination to a different URL from your dashboard.
- Scan the same downloaded image again. It lands somewhere new. Compare the file against the one you downloaded in step one: byte for byte, the image never changed.
That last step is the one that matters, and it is the step a static generator cannot survive. If you run this against a provider and the second scan goes to the old destination, what you have is a static code with a dashboard in front of it.
Common questions
- What is a dynamic QR code, in one sentence?
-
A QR code that encodes a redirect you control rather than your destination, so you can change where it goes after it has been printed, and each scan passes through a server that can count it.
- Is a dynamic QR code the same as an editable QR code?
-
Yes. "Dynamic" describes the mechanism, a redirect in the middle; "editable" describes what that buys you. Some providers also say "trackable", which is the same mechanism described by its other consequence. All three words point at one thing.
- Can I convert a static QR code into a dynamic one?
-
No. The destination is encoded in the printed pattern, so changing where it points means changing the pattern, which means a new code and a reprint. If you are not sure which kind you already have, the analytics checker decodes an image and tells you whether it routes through a redirect.
- Do dynamic QR codes expire?
-
The pattern never expires; it is just encoded data. What can stop working is the redirect behind it, and that is a property of the provider rather than of the technology. Ask what happens when you stop paying before you print, because on some services a lapsed subscription takes printed codes dark. More on this here.
- Are dynamic QR codes slower to scan?
-
There is one extra HTTP redirect, which is measured in milliseconds and is invisible next to the time the destination page itself takes to load. In practice the dynamic code is often the faster of the two to scan, because it encodes far less data and so prints with larger squares, as the first table shows.
- Does a dynamic QR code cost money?
-
Not here. Every code this site makes through the builder is dynamic and editable on the free plan, because the redirect is the product rather than a paid tier. Most "free QR code" tools generate static codes and charge to make them changeable, which is worth checking before you print.
Sources
Keep reading
Print once. Repoint forever.
Every TangoQR code is a dynamic redirect you control, editable on the free plan rather than behind an upgrade. No account needed for your first code.
Make a dynamic code, free