Static vs Dynamic QR Codes: Which One Do You Actually Need?

Most people are sold a subscription they do not need. Occasionally, one is genuinely worth it.

By QRotto · Published · 6 min read

Search for a QR code generator and you will meet this decision within about ten seconds, usually framed as free versus professional. That framing is misleading. The two types solve different problems, and the free one is correct more often than the marketing suggests.

The actual technical difference

A static QR code contains your data inside the image. The URL, the WiFi password, the contact details, physically encoded in the pattern. Scanning reads the data straight off the image. No server is involved at any point.

A dynamic QR code contains a short link to a provider's server. Scanning opens that link, the server looks up where it currently points, and redirects the phone to the real destination. The data you care about lives in the provider's database, not in the code.

Everything else follows from this one difference.

A static QR code holding a 134 character URL next to a dynamic style code holding a 20 character short link. The static one is a 49x49 grid, the dynamic one 25x25.
We generated both and decoded each one. The dynamic code is simpler only because a redirect link is short, not because the technology is better.

Side by side

StaticDynamic
Data locationInside the imageOn a provider's server
Change destination laterNoYes
Scan analyticsNoYes
Works if the provider disappearsYesNo
Works offlineYes (for WiFi and text)No, needs internet
Pattern densityDepends on data lengthAlways small (short link)
Ongoing costNoneUsually monthly
PrivacyNo third party involvedProvider logs every scan

The risk nobody mentions in the sales page

Every dynamic QR code you print becomes a dependency. If the provider raises prices, changes terms, gets acquired, shuts down, or your card expires, every printed code stops working at once. Menus, packaging, signage, business cards: all of it, simultaneously.

This is not hypothetical. QR code services have shut down and taken working codes with them, and several have moved previously free features behind paid tiers, leaving users with printed material that stops resolving unless they subscribe.

A static code has no such failure mode. It is a picture of your data. It will scan in ten years exactly as it does today.

When dynamic is genuinely the right call

There are real cases. Be honest about whether yours is one:

The pattern: dynamic earns its cost when the printing is expensive relative to the subscription, or when measurement genuinely changes what you do next.

When static is the better choice

The middle path: static code, redirect you control

Here is the approach that gets you most of the benefit of dynamic codes without the dependency, and it costs nothing beyond a domain you probably already own.

  1. Create a dedicated page or path on your own site, for example yoursite.com/menu.
  2. Generate a static QR code pointing at that address.
  3. When the destination needs to change, change what that page shows, or set up a redirect from it.

You now have an editable destination, because you control the page. You have basic analytics, because your own site's stats show visits to that path. And you have no third party dependency at all, the code points at a domain you own and renew.

The one thing you do not get is scan level analytics distinguishing a scan from an ordinary visit. Add a campaign parameter to the URL if that matters.

How to decide in one question

If this printed code stopped working tomorrow, what would it cost me?

If the answer is “I would reprint a few cards”, use static. If the answer is “fifty thousand boxes in a warehouse become dead”, the calculation changes, and either a dynamic service or the self hosted redirect above is worth the setup.

What we make here

Every code from this site is static: the data is encoded in the image, generated in your browser, and never touches a server. That means no account, no expiry, no scan limits, and nothing that can be switched off later. See the full list of generators, or read about sizing codes correctly for print before you send anything to the printer.

What "free" usually means on generator sites

A pattern worth recognising: many generators present themselves as free, produce a dynamic code by default, and only reveal the subscription requirement later, sometimes after codes have been printed. The code works during a trial period, then stops.

Signs you are being given a dynamic code when you wanted a static one:

The simplest test: scan the finished code with a plain QR reader and look at the raw contents. If it shows your own URL, it is static. If it shows a short link on someone else's domain, it is dynamic, and that domain is now a dependency for every copy you print.

What happens to a dynamic code when things go wrong

Because the redirect sits with a provider, several ordinary business events can break printed material:

None of these apply to a static code, because there is nothing in the middle to fail.

If you already have dynamic codes in the wild

You are not stuck, but you should reduce the exposure:

  1. Inventory them. List every printed code, where it is, and what it points at.
  2. Point them at your own domain. If the provider lets you set the destination, aim each code at a page on your site rather than a third party page. Then at least you control what happens at the other end.
  3. Move new print runs to static codes pointing at your own paths, so the dependency stops growing.
  4. Keep the subscription until the old print is retired: cancelling early kills the existing codes.

A note on privacy

Dynamic codes log every scan: time, approximate location, device type, and often more. For a marketing campaign that is the point. For a WiFi code in a guest bedroom, a contact card, or an equipment label, routing your users through a third party's analytics is an unnecessary disclosure, both for them and for you.

Static codes involve no third party at all. Nothing is logged because there is nothing in the path to log it.

Discussions of QR types tend to mix several concepts. Untangling them makes the choice clearer:

TermWhat it actually refers to
Static codeData encoded in the image. No server involved.
Dynamic codeA short link that redirects via a provider's server.
Short link / URL shortenerThe redirect mechanism dynamic codes rely on. Same dependency risk.
Vanity or branded codeA dynamic code whose short link uses your own domain. Reduces, but does not remove, the dependency.
Error correction levelHow much damage a code survives. Independent of static vs dynamic.
VersionThe grid size, from 21×21 upwards. Determined by how much data you encode.
PayloadThe data inside the code, a URL, WiFi credentials, a contact card.

Note that error correction and version apply to both types. A dynamic code is always small because a short link is short. That is a side effect of the redirect, not a feature of the technology.

A note on QR code security

Malicious QR codes, sometimes called "quishing", work by sending scanners to phishing pages or app downloads. Two consequences for anyone printing codes:

Advise customers to check the URL preview before tapping. Most phone cameras show it, and it is the single most effective defence.

Advertisement

QRotto

QRotto builds free browser based QR code generators and writes the guides that go with them. Every generator is verified by decoding the codes it produces and confirming the output matches the input exactly. See our editorial standards.