Blog

What makes a QR code dynamic

Article
Jorge Lapa
Jorge Lapa
Founder · · 6 min read

The print shop wants the artwork on Thursday. The page it points at will have been rewritten twice by Christmas. Somewhere between those two facts sits the question everyone asks at that moment: should this be a static code or a dynamic one?

It is an easier question once you know that a dynamic QR code is not a different kind of QR code. There is only one kind.

What is in the squares

A QR code is a URL written down in black and white modules, with a layer of redundancy mixed in so it still reads when part of it is scratched or covered. A scanner finds the three corner squares, works out the grid, reads the pattern, and hands the resulting string to the phone. That is the entire transaction. Nothing phones home, nothing checks for a newer version, and no server is involved in turning the pattern back into text.

So every QR code is static. The ink does not move. What people mean by dynamic is what the URL in the ink points at.

Where the destination lives

A static code carries the destination itself. Print https://acme.com/summer-menu-2026 into the squares and that address is what every scan will ever produce.

A dynamic code carries a short link instead, something like go.acme.com/menu. Every scan still reads the same string it did on day one. The difference is that the string now names an address you control, and what happens after the request arrives is a database row rather than a printed decision. Change the row and the next scan lands somewhere new. The mechanics are the ordinary lookup and redirect any short link does.

There is no dynamic QR format. Nothing in the specification knows the word. The code is a code; the flexibility lives in the link.

The code lasts exactly as long as the domain inside it

"Do QR codes expire?" gets asked constantly, and the answer people usually get is no, which is true and unhelpful. The pattern never expires. The redirect behind it absolutely can.

Generators that hand you a free dynamic code put their own hostname in your squares. That is the deal: they hold the address, so you keep coming back to them. When the trial ends, or the pricing changes, or the company is quietly wound down, the code still scans perfectly. It just resolves to a paywall, or a parked page, or nothing. There is no fix short of reprinting, because the part that failed is the part you shipped to a print shop.

The way out is to own the hostname. If the squares say go.acme.com, the record behind it is in your DNS, and moving to a different provider is an afternoon's work that changes nothing anyone has already printed. That is the same argument as link management generally, except that here the published copy is on a wall, and a reprint has an invoice attached.

Short URLs scan better

The editing is the reason people reach for dynamic codes. The scanning is the reason to reach for them even when you never plan to edit anything.

A QR code grows to fit its payload. More characters means more modules, and more modules means a finer grid at the same printed size.

What you encode Characters Grid
https://go.acme.com/menu 24 25 × 25
https://acme.com/summer-menu-2026 33 29 × 29
The same with a campaign's UTM tags on it 92 41 × 41
A QR code holding a 24 character short link, drawn on a coarse 25 by 25 module grid
24 characters25 × 25
A QR code holding a 33 character URL, on a slightly finer 29 by 29 module grid
33 characters29 × 29
A QR code holding the same URL with campaign tags added, 92 characters, on a dense 41 by 41 module grid
92 characters41 × 41

All three are real codes, and all three scan. Printed at identical dimensions, each module in that last code is about 40% narrower than in the first. Narrower modules need more light, a steadier hand, and a closer phone. They blur first when the poster is printed on anything absorbent, and they fail first when a corner gets scuffed against a table edge.

A short link keeps the grid coarse. It also keeps the tags off the printed artwork, which matters more than it sounds: campaign tags attached to the link record can be corrected next week, while campaign tags baked into the squares are correct forever or wrong forever. If tagging is new, start here.

Scans get counted, or they do not

A static code reports nothing, ever. It cannot. Nothing in the scan touches a machine of yours, so the most you will ever know about that poster is that you put it up.

A dynamic code passes the visitor through your server on the way, so the scan can be counted there. Which city, which kind of phone, what time of day, how the numbers moved the week after the flyers went out. Same as any click, for the same reason.

When static is the better answer

Plenty of the time.

When it is not a URL. Wi-Fi credentials, a vCard, a calendar event, a line of plain text. There is nothing to redirect, and nobody wants the guest Wi-Fi password to depend on the guest already having internet.

When you can regenerate the image for free. A code in a slide deck, an email footer, a web page, a video overlay. Editability costs nothing to add later, because replacing the picture is the edit.

When a network round trip is a liability. A code that has to work in a basement, a warehouse, a hospital corridor, or a plane. A static code resolves with no signal at all.

The rule is short. If it points at a web page and it is going somewhere you cannot cheaply reprint, make it dynamic. Otherwise static is fine, and one less thing to keep alive.

Making one that outlives the print run

Decide the address before the design. go.acme.com/menu is something you can read out over the phone to a customer who cannot get the code to scan.

Point it at the destination through your own link, then generate. Our free QR generator will take that link and give you an SVG with your colours and logo in it, in the browser, with nothing stored and no account. Paste a short link you control and what comes out is a dynamic code, because that is all a dynamic code has ever been.

Then test the thing you are actually shipping. Not the file on your screen: a printed proof, at the distance people will stand, under the light the room has. Cheap phone, dirty lens, low battery. If it reads in three seconds there, it will read anywhere.

Native QR codes inside GoGoLink, with scan analytics of their own and your styling saved per workspace, are on the way. The link underneath them works today.

← Back to blog