Static vs Dynamic QR Codes
The words make it sound like a feature comparison. It is closer to a question of ownership: whether the printed square points at your destination, or at a company that promises to keep pointing at it.
The actual difference
A static QR code contains your data. Encode https://example.com/menu and those 24 characters are physically present in the pattern of light and dark squares. Nothing is stored anywhere else. Photograph it, print it, carve it into wood: the destination travels with the image.
A dynamic QR code contains a short link to a redirect service — something like qr-provider.com/a7Kd9. Scanning it opens the provider's server, which looks up where that identifier currently points and forwards the phone there. Your destination is a database row, not part of the code.
That single structural difference generates every advantage and every failure mode on both sides.
Why dynamic codes expire
Since the printed square only contains the provider's short link, the code works exactly as long as three things remain true: the provider is still trading, your account is still current, and that identifier is still in their database.
This is why "your QR code has expired" is a real message people receive. The pattern of squares has not changed at all — it still encodes the same short link. What changed is the answer at the other end. A trial ended, a subscription lapsed, a limit on monthly scans was reached, or the service shut down.
Static codes cannot expire, because there is nothing to expire. They can still break — if the page they point to moves, the code points at a dead page — but that is a problem on your own server, and you control both ends.
What each one really costs
| Static | Dynamic | |
|---|---|---|
| Where the data lives | Inside the image | In the provider's database |
| Can it be changed after printing | No | Yes |
| Can it stop working | Only if your page moves | Yes — account, billing or provider |
| Scan analytics | None built in | Built in |
| Ongoing cost | None | Subscription, usually per code |
| Symbol size | Grows with the URL | Always small — short link |
| Privacy | Nothing is logged | Every scan is logged by a third party |
| Works offline | The code does; the page may not | Needs the provider reachable |
Two rows deserve elaboration.
Symbol size. This is the one honest technical advantage of dynamic codes. A five-character short link produces a tiny, coarse, extremely robust symbol regardless of how monstrous the real destination URL is. If you genuinely need a 12 mm code on a small label, that matters.
Privacy. Every scan of a dynamic code is an HTTP request to a third party, carrying an IP address, a timestamp, a user agent and often a referrer. If the code is on a medical form, a legal notice or anything to do with children, that is a data-protection question and not a marketing one.
The middle path
Most people who reach for a dynamic code want one of two things: the ability to change the destination later, or scan counts. Both are available without handing the code to a third party.
To change the destination later: encode a static code that points at a short path on your own domain — example.com/m — and make that path a redirect you control. Change the redirect whenever you like. The printed code never changes, nothing expires, and there is no subscription, because you already own the domain.
# Netlify _redirects
/m https://example.com/menu/spring-2026 302
# Apache .htaccess
Redirect 302 /m https://example.com/menu/spring-2026
Use a 302 rather than a 301, so browsers do not cache the old destination permanently.
For scan counts: the redirect is a request in your own server logs. Any analytics you already run will count it. You get the number without the dependency.
The one thing this does not give you is a dashboard someone else maintains. For most people that is the entire honest value of a dynamic QR service — and it is worth deciding whether it is worth an indefinite subscription and a single point of failure on printed material.
Which to use
- Anything printed that you cannot cheaply reprint — packaging, signage, engraved plates, business cards, wedding stationery: static, pointed at a path you own.
- Anything permanent — a plaque, a monument, a machine label, a book: static, and point it at a domain you intend to renew for as long as the object exists.
- A short campaign where the destination genuinely is not decided, and where a provider's dashboard is worth the fee: dynamic is defensible.
- A small label with no room: static, with a short path on your own domain, which gets you the same small symbol.
Every code this site generates is static and is created in your browser — nothing is uploaded, nothing is stored, and there is nothing to lapse. If you want to see what is actually inside one, the anatomy of a QR code takes a symbol apart region by region.
Written by Manuel Llovet, who builds and maintains QR Code Free Forever. Published 2026-08-31, last checked 2026-09-08. Figures and measurements on this page were produced for this site; the method is described in each caption.