Most explanations of the static vs dynamic QR code question are written by companies selling dynamic QR subscriptions, which makes them a bit like asking a barber whether you need a haircut. Here is the honest version: both types exist for good reasons, one of them can die on you, and for most people the free one is the right choice.

The technical difference in one minute

A static QR code encodes your data directly in the pattern of squares. If it points to yoursite.com/menu, those exact characters are physically baked into the image. A phone camera reads the squares, decodes the text, and opens the link. The decoding happens entirely on the phone: no lookup at a middleman server, and no company sitting between the scanner and your destination. That is why a static code can never expire; asking whether it can is like asking whether the words printed in a book can expire. We cover this in detail in do QR codes expire?

A dynamic QR code does not encode your destination at all. It encodes a short redirect URL owned by the QR provider, something like qr.example/x7Kf2. When someone scans it, their phone contacts the provider's server first, and the server forwards them to your real destination. That extra hop is the entire product: because the provider controls it, they can let you change the destination later and count every scan along the way.

It is also the entire risk. Your printed code is only as alive as that redirect. If your subscription lapses, your free trial ends, or the provider shuts down or changes its business model, the redirect dies, and every flyer, sticker, menu, and business card you printed dies with it.

Static vs dynamic: a fair pros and cons table

FeatureStatic QR codeDynamic QR code
Where the data livesInside the pattern itselfOn the provider's server, behind a redirect
Can it expire?NeverYes, when a trial, subscription, or provider ends
Edit destination after printingNo (but see the workaround below)Yes
Scan analyticsNot built inYes: scan counts, rough location, device type
Account requiredNoYes
Ongoing costFreeUsually a recurring subscription
Wi-Fi, plain text, vCardsYes, with no internet needed at scan timeLinks only; every scan needs connectivity
PrivacyNo third party sees your scansProvider logs every scan

One row deserves emphasis: static codes can carry data that is not a link at all. A Wi-Fi QR code that joins guests to your network, a plain-text note, or a contact card all work with zero internet, something a redirect-based code can never do.

When dynamic QR codes are genuinely worth paying for

Honesty cuts both ways, so let's be clear: dynamic QR services are a legitimate product, and in some situations they earn their fee.

  • You need scan analytics. If knowing how many people scanned which poster in which city actually drives decisions (comparing ad placements, proving campaign results to a client), only a dynamic code can measure that at the scan level.
  • The destination genuinely can't be pinned down. If you manage hundreds of codes whose targets change constantly, provider-side editing beats maintaining redirects yourself.
  • Huge print runs committed before the destination is final. When packaging goes to press months before a landing page exists, an editable redirect is cheap insurance against a very expensive reprint.
  • Tiny print areas. A short redirect URL produces a sparser, easier-to-scan pattern than a very long address, which matters on small labels.

If any of those describe you, pay for it, but choose an established provider, pay annually rather than relying on a trial, and put the renewal date somewhere you will actually see it.

The trial trap: how "free" dynamic codes go dark

There is a pattern worth knowing before you print anything. Many popular QR generators put a signup wall in front of the download and quietly issue you a dynamic code, even when a static one would do. The sequence goes like this: you generate a code during a free trial, you print it on menus or invitations, the trial ends a couple of weeks later, and the redirect is switched off. Scanners now land on an error page or an upsell screen. The only quick fix is paying whatever the provider asks, because the alternative is reprinting everything; your own printed material becomes the leverage.

No company sets out to be described this way, but the incentive structure is real, and it is one of the most common reasons a QR code stops working. A useful rule of thumb: if a generator demands an account before it hands over what is ultimately a picture of squares, ask why it needs to know who you are.

The static trick that replaces most dynamic use cases

The main selling point of dynamic codes — change the destination after printing — has a free equivalent: point your static code at a URL you control. That can be a page on your own website, a Google Drive file set to "anyone with the link," or a simple hub page you host yourself. The printed code never changes; you change what lives behind it. A restaurant can update its menu QR code's underlying PDF every week without touching the code itself. You give up per-scan analytics (though adding UTM parameters to the link gets you solid data in your own analytics tool), and in exchange nobody can ever hold your printed material hostage. You can generate a static code for free and have this working in about a minute.

Decision checklist

  1. Do you need per-scan analytics to make real decisions? If not (and be honest), go static.
  2. Will the content change? If yes, but you can host it at a stable URL you control, go static and use the trick above.
  3. Is the code going somewhere permanent, such as engraved signage, wedding invitations, or product packaging? Static, no exceptions.
  4. Is it a Wi-Fi code, contact card, or plain text? Static is the only type that works offline.
  5. Are you willing to pay a subscription for as long as the code exists in the world? Printed codes routinely outlive trials, budgets, and providers. If that sentence makes you uneasy, go static.

When in doubt, default to static. PermaQR's free generator creates only static codes, entirely in your browser: nothing is uploaded, no account exists, and there is nothing anyone can switch off later.