QR Codes

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

13 Jul 2026 5 min read

Every QR code you have ever scanned is one of two things, and the difference is not cosmetic — it decides whether the code can ever be changed, whether it can be measured, and how well it scans at small print sizes. Here is what is actually happening inside the square.

A static code stores the destination itself

A QR code is a container for text. When you generate a static code for a menu PDF, that exact address is encoded into the black-and-white modules. Nothing is looked up; the phone's camera reads the characters and hands them to the browser.

Two consequences follow directly, and both matter:

  • It can never be changed. Not by you, not by the vendor who generated it. The destination is the pattern. Changing where it goes means a different pattern, which means reprinting everything.
  • Nothing can be counted. The scan is a private conversation between the phone and the destination site. Unless you control that site and can separate QR traffic from every other visit, the code tells you nothing.

Static codes are free, work offline forever, and depend on no third party staying in business. For a Wi-Fi password on a guest-room card, a vCard on a business card, or a plain text label, they are the correct choice.

A dynamic code stores a pointer

A dynamic code encodes a short link — six or seven characters after a domain — and that link is a record in a database you control. The phone opens the short link, the server looks up where it currently points, and redirects.

The indirection buys two things a static code physically cannot provide:

  • The destination is editable. Same printed square, new target. Every copy already printed, stuck to a window or laminated onto a table follows the change.
  • Every scan passes through your server. So you get counts, timing, country, device and referrer — the things that turn a printed code into something you can evaluate.

The trade-off is honest: a dynamic code depends on the redirect service continuing to exist and resolve. That is a real dependency, and it is the one thing static codes never have.

The scannability effect nobody mentions

There is a third difference that shows up in print, and it surprises people.

QR codes grow with the amount of data they carry. A short string fits in a low-version code with few, large modules. A long URL — say a menu page with three UTM parameters attached — needs a higher version with many more, much smaller modules. Printed at the same physical size, the second code has smaller squares, less contrast margin per module, and a noticeably higher failure rate on older cameras, at an angle, or in dim light.

Because a dynamic code encodes a short link rather than the full destination, it is almost always the less dense of the two — even though it does more. If you are printing small, on a table tent, a business card or a bottle label, that is a practical argument on its own, quite apart from editability. If you need the campaign parameters, put them on the destination side of the redirect where they cost no modules at all; see UTM parameters and short links.

Error correction interacts with all of this

QR codes carry redundancy at four levels, recovering roughly 7%, 15%, 25% and 30% of the data when part of the code is damaged or covered. That redundancy lives inside the pattern, so raising the level makes the code denser at the same print size — compounding the density problem above.

Practical guidance: level M for most printed material; level Q or H only when you are placing a logo in the middle, because the logo destroys real modules and the redundancy is what lets the code survive it. A long URL at level H printed at 2 cm is the classic combination that produces a code nobody can scan.

Choosing, in one question

Ask: could this destination ever change, or would I like to know how many people scanned it?

If either answer is yes, you need a dynamic code. For anything printed on something that outlives a campaign — packaging, menus, signage, flyers, posters, business cards, product labels, vehicle livery — the answer is almost always yes, because the printed object reliably outlives the URL on it.

If both answers are no — a Wi-Fi credential, a plain text note, a phone number — take the static code. It is free, permanent and dependency-free.

What "editing a QR code" really means

You cannot edit a printed pattern. What you edit is the destination behind the short link. This is a common misunderstanding worth stating plainly: nobody is changing the ink. The square keeps resolving to the same short link forever; the short link is what gets re-aimed.

Which is also why the short code itself must never change once printed. Re-point the destination as often as you like; change the code and you break every copy in circulation. There is a fuller walkthrough on editing a QR code after printing.

What this looks like in practice

A pizzeria prints 40 table tents in March. In June it moves the menu to a new page, in September it runs an autumn menu, in January it raises prices. With static codes that is three reprints. With dynamic codes it is three edits and the tents never move.

The same logic applies to a flyer drop where the landing page is not ready yet, a product label printed a year before the campaign it will support, and a conference badge that should point at this year's schedule.

ShareCut's QR generator does both: a static code encodes the payload directly, and a dynamic code points at a ShareCut short link, so the destination stays editable after printing and every scan is counted. Editable destinations and the full scan breakdown are on the paid plans. You can also pair a code with a branded short link on the URL shortener, or build a whole QR menu where the code and the page are created together.

Make one now: generate a free QR code — editable after printing, and tracked from the first scan.

#qr code#dynamic qr#static qr#tracking#guide