Guides

Static vs dynamic QR codes

Updated

Short answer

A static QR code stores its content, such as a link, a WiFi login or a contact card, directly in the pattern. It never expires, needs no account and cannot be tracked, but it cannot be changed after printing. A dynamic QR code stores a short link to a redirect service instead, so the destination can be edited and scans counted, but it only works while that service keeps the link running.

What a static QR code is

In a static code, the pattern is the data. The black and white squares, called modules, spell out the link, the text or the WiFi details themselves, and a phone camera decodes them straight back. There is no server between the scan and the content, and no company involved after the code is made.

That has three consequences. A static code keeps working for as long as the print survives, because there is nothing to switch off. Nobody can count its scans, because the scan never passes through anyone. And content that does not need the internet, such as a WiFi login, a contact card, a phone number or plain text, can be read with no connection at all.

The cost is that a static code cannot be edited. To change what it holds, you make a new code and print it again. Every code made on Any QR is static.

What a dynamic QR code is

A dynamic code holds a short web address that belongs to a QR code provider. When someone scans it, their phone opens that short address, the provider's server looks up where it should go, records the scan and redirects the phone to the real destination. Change the destination in the provider's dashboard and the printed code goes somewhere new.

The catch is the dependency. The code only works while the provider keeps that short address running. Dynamic codes are usually sold as a subscription, and when a trial or a plan ends the codes can be paused or sent to a page of the provider's choosing. If the provider closes, every code it issued stops working at once, wherever it was printed.

Static and dynamic side by side

How static and dynamic QR codes compare
StaticDynamic
Where the content livesIn the pattern itselfOn the provider's server
Change it after printingNo: make and print a new codeYes, from the provider's dashboard
ExpiryNeverWhen the provider stops serving the link
Scan countsNoneYes, usually with time, device and approximate location
Account neededNoYes
CostFreeUsually a monthly or yearly subscription
Works offlineYes, for WiFi, contacts, text and phone numbersNo: every scan goes through the redirect
Pattern densityGrows with the contentStays low, since the short link is always short

Which one to choose

Choose a static code when:

  • The content will not change: a WiFi login, a contact card, a phone number, a location or an app store listing.
  • The code goes on something that lasts, such as packaging, signage or a business card, and has to keep working for years.
  • You would rather no third party logged each scan.
  • You do not want a subscription.

Choose a dynamic code when:

  • You must change where a printed code leads, for example a campaign page that changes every month.
  • You need scan counts for each code and are happy to pay for them.
  • You accept that the codes depend on the provider staying in business and your plan staying active.

The middle ground: a static code to a link you own

Most of the flexibility of a dynamic code is available without renting one. Make a static code that opens an address on your own website, such as example.com/menu, then change what that page shows, or where it redirects, whenever you like. The printed code never changes, the link stays yours, and your own website analytics can count the visits if you want them.

The one thing to keep up is the domain name. As long as you renew it, the code keeps working.

Frequently asked questions

No. The content is encoded in the pattern, so there is nothing to expire. A static code that opens a web page is only as lasting as that page: if the page is taken down, the code still scans but leads nowhere.

Not from the code itself. If the code opens a page on your own website, your site analytics can count visits to it, and a tagged link, for example with UTM parameters, can separate the visits that came from the code.

No. A printed static code always holds exactly what it was made with. To change where it leads, print a new code, or, if it opens a page on your own website, change or redirect that page.

A dynamic code only ever holds a short link to the provider, however long the real destination is. Fewer characters need fewer modules, so the pattern stays simple. A static code holding a long link can be kept simple too, by shortening the link on a domain you control.

No. Every code made here is static, which is what lets the site work with no account, no server and no view of anything you type.