Static vs dynamic QR codes: the honest difference

A static code encodes your destination directly and works forever, with or without the company that made it. A dynamic code encodes a short link controlled by a provider, which lets you change the destination and count scans — at the cost of depending on that provider staying in business and your account staying active.

What a static code actually is

A static QR code contains your destination in the pattern itself. Scanning it does not contact the company that generated it, because there is nothing to contact — the URL is in the printed squares.

This has a consequence worth being explicit about: a static code cannot expire, cannot be disabled, and cannot be taken away from you. If the company that made it disappears tomorrow, your code carries on working exactly as before.

It also cannot be changed. The destination is in the ink. Wanting it to point somewhere else means printing a new one.

What a dynamic code actually is

A dynamic code encodes a short link belonging to a provider. Scanning it reaches their server, which looks up where you have said the code should point and forwards the visitor there.

That indirection buys two things that are genuinely impossible otherwise: you can change the destination after the code is printed, and you can count how many people scanned it and roughly when and where.

It also creates a real dependency. The code works only while that provider's infrastructure works and your account with them is active. That is not a reason to avoid dynamic codes — it is a reason to know which kind you have.

The claim to be sceptical about

Some generators imply, or state outright, that their free codes expire after a trial period.

A static code cannot expire. There is no mechanism by which it could — nothing routes through anyone. When a generator says its free codes expire, what has actually happened is that it silently gave you a dynamic code pointing at its own redirect, which it can then switch off.

The test is simple: if the code you were given encodes your own URL, it is static and permanent. If it encodes someone else's short link, it is dynamic and conditional. You can check by scanning your own code and reading what it says.

Which one to use

Use static when the destination will not change and you do not need numbers — a WiFi password, a contact card, a permanent website. It is free, permanent, and depends on nobody.

Use dynamic when the code will outlive the destination, or when you need to know whether it worked. Printed material has a long life: menus change, campaigns end, properties sell, and packaging sits in a warehouse for a year. A code that can be repointed is worth paying for in those cases, and only those.

What should happen when you stop paying

This is the question to ask any provider before you print anything, because the answers vary enormously.

Here, a lapsed dynamic code enters a grace period during which it keeps working normally. After that it shows a neutral page saying the code is no longer active — not a 404, not an advertisement, and never a redirect to somewhere you did not choose. Your configuration is retained so reactivating restores everything, and the retention period is published rather than left vague.

A provider that redirects your lapsed codes to their own marketing, or to an advertiser, has taken an asset you printed and monetised it without you. It is worth asking.

Make one now

What should the code do?Opens a web page

We add https:// if you leave it off.

Appearance
#000000
#ffffff

Codes with a label are scanned noticeably more often than bare ones.

A logo covers modules. We raise error correction to compensate and then decode the finished code to confirm it still reads.

Higher survives more damage but makes the pattern denser, so each module is smaller at the same printed size.

This sets the size the code needs to be for the distance people will scan it from.

Questions

Can a static QR code expire?
No. There is no mechanism by which it could — the destination is encoded in the pattern and nothing routes through a third party. Any generator claiming its free static codes expire has given you a dynamic code without saying so.
Can I convert a static code to a dynamic one?
Not in place. The printed pattern encodes the destination, so changing what it points at means changing the pattern, which means reprinting. If you think a destination might change, start with a dynamic code.
Do dynamic codes scan more slowly?
Imperceptibly. There is one extra HTTP redirect, typically a few tens of milliseconds. What matters far more is that the short link is shorter than most real URLs, which means fewer modules and a code that is easier to scan at small sizes.
Can I see who scanned my code?
No, and you should be wary of anyone who says you can. Scan analytics here record a coarse device class, an operating system family, a country, and a timestamp. No IP address, no fingerprint, and nothing that identifies a person.

More guides

  • What size should a QR code be?The rule is scanning distance divided by ten, adjusted for how much data the code holds. Work out the exact size for your code and where it is going.
  • Why QR codes fail to scanSix reasons a printed QR code does not work, in the order they actually occur, and how to tell which one you have.