Skip to content
FreeToolSmith

Static vs Dynamic QR Codes

One keeps working forever. The other can be edited — until someone stops paying.

Last updated 22 September 2026

Two QR codes can look identical and behave completely differently. The distinction is not visible in the pattern, is rarely explained at the point you generate one, and only becomes obvious when a code stops working — often after it has been printed thousands of times.

Static codes

A static code contains your data directly. Scanning it reads the URL, text or WiFi details straight out of the pattern. Nothing is looked up and no server is involved.

The consequences follow from that. It works forever, because there is nothing to keep running. It works offline for things like WiFi details. Nobody can track scans, including you. And it cannot be changed after printing, because the destination is part of the image.

Dynamic codes

A dynamic code contains a short link to the generator’s server, which redirects to your real destination. The code says something likeqr-service.com/a1b2c3, and that service decides where you actually go.

This buys two genuinely useful things. You can change the destination without reprinting, which matters for a menu or a campaign. And you get analytics: scan counts, times, rough locations.

It also creates a dependency. The code works only for as long as that company keeps the redirect alive, at a price you find acceptable.

The trade-off

StaticDynamic
Works foreverYesOnly while the service runs
Editable after printingNoYes
Scan trackingNoYes
Ongoing costNoneUsually a subscription
Works offlineYesNo
Pattern densityDepends on dataAlways simple

Why free generators push dynamic codes

Search for a QR generator and most results will hand you a dynamic code, frequently without saying so. The reason is straightforward: a static code is a one-off interaction with no further relationship, while a dynamic code routes every future scan through their infrastructure. That creates an audience, analytics to sell, and leverage.

That leverage has been used. Codes generated for free have later been put behind paywalls, with the operator holding the redirect hostage on material already printed and distributed. Others have simply shut down. In both cases the printed code becomes a dead link, and there is no way to fix it except reprinting everything.

This is not an argument that dynamic codes are dishonest. It is an argument for knowing which kind you are given, and for treating a free dynamic code as a dependency rather than a gift.

Which to use

Use a static code when:

  • The destination will not change — a company homepage, a WiFi network, a phone number
  • It is going on something permanent: signage, packaging, a business card, an engraved plate
  • You do not want a third party seeing who scans it
  • It must work without an internet connection, such as WiFi joining details

Use a dynamic code when:

  • The destination genuinely will change — a seasonal menu, a rotating campaign
  • Scan analytics matter commercially enough to justify an ongoing cost
  • You are willing to pay for the redirect indefinitely, and to accept the risk if you stop

A middle path

If you own a domain, you can get most of the benefit of both. Encode a static QR pointing at a URL you control, such as yoursite.com/menu, then redirect that page yourself. The code is permanent and depends on nobody else, but you can still change where it leads, and your own server logs give you scan counts.

How to tell what you have been given

Scan the code and look at the URL before opening it. If it shows your own destination, it is static. If it shows an unfamiliar short domain, it is dynamic and routed through somebody else.

Worth checking before a print run rather than after.

What this site generates

The QR code generator here produces static codes only. Your data is encoded directly into the image, the code does not point at this site, and it will keep working regardless of what happens to us. There is no account, no scan limit and no tracking — which also means we cannot tell you how many times it was scanned. That is the trade-off, stated plainly.