# Static vs dynamic QR codes

> A static QR code contains its destination directly, so it never expires and cannot be tracked or edited. A dynamic code contains a short link that redirects through a provider, making it editable and trackable — and dependent on that provider staying online and paid.

Source: https://useqr.app/docs/basics/static-vs-dynamic-qr-codes · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The difference in one line

Static: the destination is *in* the code. Dynamic: the destination is *looked up* by someone
else's server.

| | Static | Dynamic |
|---|---|---|
| Expires | never | when the subscription or provider does |
| Editable after printing | no | yes |
| Scan analytics | none | yes |
| Third party in the path | none | the provider |
| Cost | free | subscription |
| Works offline | yes, for non-URL payloads | no |
| Privacy | provider sees nothing | provider sees every scan |

## The pitch for dynamic codes, fairly stated

They are genuinely useful. You can fix a wrong URL after printing 50,000 flyers. You can see
how many people scanned the poster at the station versus the one in the lobby. You can route
iOS and Android users differently from one code. For a marketing team running frequent
campaigns, that is real value and worth paying for.

## The risk, equally fairly stated

Your printed material now depends on a company continuing to exist, continuing to serve that
domain, and you continuing to pay. If any of those stops, every code already in the world
stops working — and you cannot recall packaging.

This is not hypothetical. QR shortener domains have been retired, and providers have gone
out of business, taking printed campaigns with them. The longer the printed material lives,
the worse this risk gets: it is negligible for a six-week poster and serious for packaging
with a five-year shelf life.

## The option most people actually want

**A static code pointing at a redirect on your own domain.**

```
Printed code → https://example.com/p/spring → 302 → wherever you want today
```

You get editability. You get analytics, in your own logs. You get device-based routing if
you want it. And there is no third party who can take it away, because you own the domain
and the redirect.

The cost is a domain you were probably paying for anyway and a few lines of server config.
It is strictly better than renting the same capability, and it is what we would recommend to
anyone printing something with a life measured in years.

## Why UseQR does not offer dynamic codes

Running redirects means hosting other people's links, and at any scale that means hosting
phishing. Doing it responsibly requires a real trust-and-safety operation — abuse reporting,
takedown, monitoring, appeals. We would rather ship nothing than ship a service that becomes
a phishing relay with our name on it. If we build it, it will be with that stack in place.

## FAQ

### Do static QR codes expire?
No. The destination is encoded in the pattern itself, so nothing has to keep running for the code to work. Only the destination going away breaks it.

### Can I edit a static QR code after printing?
Not the code itself. But if it points at a URL on your own domain, you can change the redirect server-side and the printed code will follow — which is what most people actually want.

### What happens if my dynamic QR provider shuts down?
Every printed code stops working at once, and there is no way to recover material already distributed. This is the main reason to prefer a redirect on a domain you own for anything long-lived.

### Are dynamic QR codes worth paying for?
For frequent campaigns with short-lived print runs, often yes. For packaging or signage with a multi-year life, a static code pointing at your own redirect is safer and cheaper.

## Try it

- https://useqr.app/url
- https://useqr.app/validate
