Back to Blog

learn

Static vs Dynamic QR Codes: What's the Difference?

Zahar11 min read
Scannable static and dynamic QR codes in an isometric illustration: one points to a fixed destination, while the other routes through PixlQR to editable destinations and analytics

A static QR code has the destination baked into the pattern itself, so it can never be changed once printed. A dynamic QR code stores a short link you control, which means you can change where it leads at any time and see how many people scanned it. Static is permanent and free. Dynamic is editable and trackable.

That is the whole difference. The rest of this article is about which one you should actually use, and the trade-off most comparisons skip.

At a glance

  • A static QR code stores the destination inside the pattern. It cannot be changed after printing, is free, and keeps scanning even if every QR company disappears — though if it encodes a URL, that page still has to stay up.
  • A dynamic QR code stores a short link you control. You can change the destination at any time and see how many people scanned it, from where, and on what device.
  • If it goes on something printed, usually use dynamic. Printing is the moment a mistake becomes expensive to fix. The exception is anything meant to outlive the provider — see the fifteen-year machinery case below.
  • Use static for WiFi credentials, phone numbers, and plain text — data that is not a link and will never change.
  • The catch nobody mentions: a dynamic QR code stops working if the provider behind it shuts down. A static one keeps scanning — but a static URL still dies with its destination.

How a static QR code works

A QR code is not a link. It is a grid of black and white squares that encodes text. When you scan one, your camera reads that text and your phone decides what to do with it. If the text happens to start with https://, the phone offers to open it.

In a static QR code, the destination is the encoded text. Point a generator at https://example.com/menu.pdf and those characters are physically arranged into the pattern. The code and the destination are the same object.

This has one consequence that matters more than any other: changing the destination means generating a different code. The squares would have to move. Anything already printed keeps pointing where it always pointed.

Static codes are free, keep scanning indefinitely, and depend on no QR provider. Nobody can switch them off, because there is no service in the middle to switch off. If the code holds a URL rather than plain text, though, it inherits whatever happens to that web page — the pattern outlives the provider, not the destination.

How a dynamic QR code works

A dynamic QR code encodes a short link instead of your real destination. Something like https://pxqr.io/a1b2c. When someone scans it, that short link looks up where it should send them right now, and forwards them there.

Static:   [QR pattern] --> https://example.com/menu-spring.pdf
Dynamic:  [QR pattern] --> https://pxqr.io/a1b2c --> (lookup) --> wherever you point it today

The printed pattern never changes. The lookup does. Change the destination in your dashboard and every code already printed, stuck to a window, or on a business card starts sending people somewhere new within seconds.

That extra hop is also where tracking comes from. Because the scan passes through a server, that server can count it, and record the country, device type, and time.

Changing a dynamic QR code's destination in PixlQR

A static QR code locked to one destination beside a dynamic QR code that can be repointed at any time

Side-by-side comparison

StaticDynamic
Change destination after printingNoYes
Scan tracking and analyticsNoYes
Works if the provider shuts downYesNo
CostFreeUsually a subscription
Pattern complexityGrows with URL lengthAlways small
Best forPermanent, unchanging informationAnything printed or long-lived

When a static QR code is the right choice

Static gets unfairly dismissed. It is the better choice more often than QR vendors admit.

Use static when the information will genuinely never change:

  • WiFi credentials on a guest room card. The network name and password are the data itself, not a link. A dynamic code here would be pointless and would break without internet access.
  • A phone number or email address on a business card.
  • Plain text that has to work with no internet connection at all.
  • One-off print runs where the destination is fixed and you do not care who scanned.

If you would never want to change it and would never look at the analytics, you are paying a subscription for nothing. Use static.

When dynamic is worth it

The rule of thumb: if it goes on something physical, use dynamic.

Printing is the moment a decision becomes expensive to reverse. A restaurant that prints 2,000 menus with a static code pointing at menu-spring.pdf has 2,000 pieces of dead cardboard the day the autumn menu goes up. The same restaurant with a dynamic code changes one field and every menu on every table is correct again.

Specific cases where dynamic pays for itself:

  • Menus, price lists, and catalogues that change seasonally
  • Packaging and labels with long lead times, where you commit to a design months before it ships
  • Event signage where the destination changes between sessions
  • Marketing campaigns where you need to know which poster, which city, or which channel actually produced scans
  • Anything with a typo risk. A wrong URL in a static code is a reprint. In a dynamic code it is a thirty-second fix.

That last one is underrated. The ability to correct a mistake after printing is worth the subscription on its own.

Scan analytics for a dynamic QR code

The trade-off nobody mentions

Most comparisons present dynamic as strictly better. It is not, and you should understand the cost before you commit.

A dynamic QR code depends on a company staying alive. The pattern points at a short link. If the service behind that link shuts down, loses the domain, or deletes your account, every code you ever printed stops working. Not degrades. Stops.

A static code has no such dependency. It will scan correctly in twenty years because the destination is in the ink.

This is a real risk and it deserves a straight answer rather than a sales pitch. Three things reduce it:

  1. Check the short domain is owned, not rented. If a provider uses a free link-shortener domain, your codes inherit that shortener's fate.
  2. Prefer a provider that offers a custom domain, publishes a continuity policy, or will hand over your redirect mappings. Exporting your QR list and scan history is worth having, but be clear about what it does not fix: codes you have already printed encode the provider's domain, so an export will not bring a single one of them back if that provider vanishes. Only control of the domain does that.
  3. Match the tool to the print run's lifespan. A poster for next month's event carries almost no risk. A code etched into machinery meant to last fifteen years is a different decision, and static may genuinely be the safer engineering choice.

We would rather you print a static code for the right job than a dynamic one you regret.

Why long URLs make static codes harder to scan

Here is a practical difference that rarely comes up and causes real failures.

A QR code stores its data in the pattern, so more characters means more squares. A static code holding a long URL with campaign parameters becomes visibly denser than one holding a short address. Those smaller squares are harder for a camera to resolve, especially when the code is printed small, on a curved surface, on textured stock, or read in poor light from a distance.

We generated these three at the same size and the same error-correction level, changing only the URL. All three are real and scannable — try them:

Three QR codes showing how URL length increases pattern density

What it encodesCharactersGrid
A short link2125 x 25
A normal product URL4633 x 33
The same URL plus UTM campaign tags12949 x 49

The third code packs almost four times as many modules into the same printed area as the first. At poster size that is invisible. On a table tent, a bottle label, or a business card it is the difference between a code that scans first time and one that "sometimes works".

A dynamic code sidesteps this entirely. https://pxqr.io/a1b2c is short no matter how monstrous the real destination is, so the pattern stays sparse and stays scannable at small sizes.

If you have ever had a QR code that "sometimes works," excessive density from a long encoded URL is one of the first things worth ruling out.

How to tell which type you already have

You do not need special tools.

  1. Scan the code with your phone's camera.
  2. Look at the URL it offers before you tap it.

If it shows your real destination, it is almost certainly static. If it shows a short link, something is redirecting — but that alone does not prove the code is dynamic.

Two cases break the simple version of this test:

  • A static code can have a shortener baked into it. If someone generated it from bit.ly/spring-menu, those characters are in the pattern permanently. The redirect is editable, the code is not, and you are now depending on the shortener too.
  • A dynamic code can use a custom domain. If a provider lets you put codes on qr.yourbrand.com, the link looks like yours because it is yours.

The reliable test is not the URL, it is control: can you change where the code leads without reprinting it? If yes, it is dynamic. If the only way to change it is to generate a new pattern, it is static — whatever the URL looks like.

If a code was printed by an agency or a previous supplier and it turns out to be dynamic, find out whose account owns it. Whoever controls that account controls where your printed codes lead.

Frequently asked questions

Can a static QR code be converted to dynamic later? Not the printed one. The destination is in the pattern, so it would have to be reprinted. If there is any chance you will want to change it, start dynamic.

Do dynamic QR codes expire? The pattern does not, but the service behind it can stop working if a subscription lapses. Check what your provider does with codes on an expired plan before printing at volume.

Is one type faster to scan? Static resolves marginally faster because there is no redirect. In practice the difference is a fraction of a second and nobody notices. Density affects real-world scan speed far more than the redirect does.

Do static QR codes work without internet? The scan does. Reading the pattern is entirely offline. Opening a website afterwards still needs a connection, but WiFi and plain-text codes work with no signal at all.


Try it yourself

Everything above is easier to believe once you have scanned one. This is a real dynamic QR code, not an illustration:

Scan this QR code with your phone to see a live dynamic QR code in action

It currently leads to our features page. The point is what you cannot see: we can change where it goes without touching that image. The pattern above is fixed forever, the destination is not. If you come back in a month and it leads somewhere else, that is the whole article demonstrated on itself.

That is also exactly what happens to a code printed on a menu, a poster or a box.

If your code is going on anything printed, dynamic is almost always the right call. You can create one free and see the difference immediately.

Create a trackable dynamic QR code — free plan, no card required.

dynamic-qrstatic-qrqr-basicsqr-code-analytics

Try it: build a QR code here

An interactive builder loads in this space. If it stays empty, enable JavaScript to use it — or create an account and build your QR code in PixlQR.

Create a dynamic QR code

Print it once, change where it points whenever you like.

Get started free

No card required