Static vs dynamic QR codes: why a static QR code never expires

A plain explanation of what a QR code really stores, how static and dynamic codes differ, and why a static code keeps working forever.

On this page

You print a thousand flyers, and six months later the QR code on them leads to an error page. It happens more often than it should, and the cause is almost always the same: the code was dynamic, and the service behind it stopped. This article explains the difference between static and dynamic QR codes, so you can pick the right one before anything is printed.

What a QR code actually stores

A QR code is just a way of writing text as a pattern of black and white squares. A phone camera reads the pattern and turns it back into text. If the text is a web address, the phone offers to open it. If it is a Wi-Fi description, the phone offers to join the network. The code itself does not contain a web page, an account or a connection to anything. It contains characters, and that is all.

The amount of text is limited. The largest QR code can hold a few thousand characters, but the more it holds, the denser the pattern becomes and the harder it is to scan at a small size.

Static QR codes

In a static QR code the text you want is written directly into the pattern. A link code contains the whole link. A Wi-Fi code contains the network name and password. A contact code contains the whole contact card.

Because everything is inside the image, a static code needs nothing else to work. There is no server to stay online, no account to keep paid, and no company that could change its terms. The phone reads the code and acts on it. That is why a static QR code never expires: there is nothing in the system that has an end date.

The trade-off is that a static code cannot be edited. If you printed a link and the link changes, you cannot fix the printed code. It also cannot count scans, because nothing is reported anywhere when someone scans it.

Dynamic QR codes

A dynamic QR code contains a short web address that belongs to the QR service, for example a link on the service's own domain. When someone scans it, the phone opens that short address, the service's server looks up where it should send you, and redirects the phone to your real destination.

That detour is what makes the features possible. The service can count scans, record roughly when and where they happened, and let you change the destination later without reprinting. For a campaign where you need numbers, that is genuinely useful.

It is also the weakness. The code now depends on the service staying in business, on your subscription staying active, and on the service never changing its rules. If any of those fail, the printed code can stop working or send people to a placeholder page. Printed material is the one thing you cannot recall.

Side by side

FeatureStaticDynamic
Where the data livesIn the image itselfOn the service's server
Can the destination change?NoYes
Scan statisticsNoUsually yes
Works if the provider disappearsYesNo
Ongoing costNoneOften a subscription
Third party sees the scansNoYes

Why a static code never expires

Expiry only exists when something has to be renewed. A static code has no hosting, no domain of its own, no subscription and no database entry. The only thing that can break it is the place it points to. If the link is to your own website and the site stays up, the code works for as long as the printed material survives.

You can get some of the flexibility of a dynamic code without its risk. Point a static code at a short, stable address on a domain you own, for example your own website's page for the campaign. You can then change what that page shows, or redirect it elsewhere, at any time, and no third party sits in the middle.

When to use which

Choose static for:

  • Wi-Fi codes, contact cards, plain text, phone numbers and email addresses.
  • Menus, packaging, business cards, signs and anything printed for the long term.
  • Any case where you do not want a third party to see who scans your code.

Choose dynamic only when you really need scan counts or the ability to change the destination of already printed material, and you accept depending on the provider. In that case, use a short link on a domain you control, so you can move providers later.

Before you print any QR code

  1. Test it with at least two phones.
  2. Keep strong contrast, dark on light, and leave the blank border around the code.
  3. Make it large enough for the distance it will be scanned from.
  4. Keep the content short, because shorter content makes a simpler, easier code.
  5. Check that the destination will exist for as long as the printed material does.

You can make a static code for a link, Wi-Fi network, contact card and more with the free QR code generator. It runs in your browser, so what you type is never uploaded.

Tools mentioned in this article

Back to the blog