What is a dynamic QR code, in one mechanical sentence: a pattern that encodes a short link belonging to the generator rather than the address you actually want people to reach. The scan goes to that short link first, the server looks up where it should currently forward, and the visitor arrives at your destination without ever seeing the detour. Because the printed pattern only ever held the short link, you can change the destination afterwards and every copy already on a poster, a label or a business card follows the change.
How a dynamic code gets from pattern to destination
The code is created and gets its own short link
When you make a dynamic code, it is assigned a short identifier on the MakeQR domain. That identifier, not your URL, is what gets encoded into the pattern you download and print.
A scan reaches the redirect, not your site
The phone camera opens the short link. The server reads the identifier, looks up the destination recorded against it, and answers with a redirect. The visitor's browser follows it immediately.
The destination is checked before it goes live
Every destination is validated when it is set and when it is changed. A redirect that can be edited after printing is useful to you and attractive to someone sending people somewhere harmful, which is why the check happens on the way in rather than after a complaint.
Editing the destination changes nothing on paper
Change the URL in the dashboard and the next scan of the same printed code lands at the new address. The pattern is untouched because the pattern never held the old address.
Scans are counted as they pass through
Because every scan goes through the redirect, it can be counted. A static code has no such moment, which is why a scan count is not something that can be added to it afterwards.
Why only dynamic codes can report anything
A static code is finished the moment it is drawn: the destination is in the pattern, the phone goes straight there, and nothing in the path belongs to the generator. No count exists because no server was involved. A dynamic code is the opposite — the redirect is a step you own, so it is also the step where a scan can be recorded. Tracking is not a feature bolted onto dynamic codes; it is a side effect of the redirect that makes them dynamic in the first place.
What a dynamic code reports, and what it deliberately does not
The free plan shows how many scans a code has had and when the last one happened. Starter and above add scans per day, unique scanners per day, country and device type for the last thirty days. The country is read from the connection at the moment of the scan and only the two-letter code is kept — no address is stored, and nothing finer than country exists to report. Unique scanners are counted with a daily hash whose random salt is deleted every day, so the same person scanning on Tuesday and Wednesday is two counts, not one recognised visitor.
The cost, and what happens if you stop paying
Two dynamic codes are free forever. They do not expire, they do not stop redirecting, and they do not require a card. Paid plans raise the number of codes and the depth of the statistics rather than unlocking the redirect itself. If a paid subscription ends, two of your codes keep working permanently — which matters more than it sounds, because a code that dies with a subscription is a code you cannot safely print.
When a static code is the better answer
A WiFi code cannot usefully be dynamic: the network name and password have to be in the pattern for the phone to join, so there is nothing to redirect. The same goes for a vCard, a plain phone number or an SMS draft. And for a link that will never move — a company homepage on a building sign — a static code removes a dependency instead of adding one.
What is actually inside the pattern
A short URL on the MakeQR domain and nothing else. Your destination lives in a record the redirect looks up, not in the printed ink, which is the entire reason the destination can move. Decode a dynamic code with any scanner app and the short link is what you will see.
https://makeqr.ai/r/AbC1234Printing something you intend to repoint
A short link encodes less data than a long one, so a dynamic code is usually a lower version with larger modules at the same physical size — slightly easier to scan than a static code carrying a long URL with tracking parameters. The practical minimum for arm's-length reading is unchanged, and the usual width-to-distance margin applies.
Print it at least 20 mm (2.0 cm) wide
Misunderstandings that cost real money
Assuming a static code can be edited later
It cannot, by any tool, including this one. The destination is physically part of the pattern. If there is any chance the link will move, that decision has to be made before the print run, not after.
Expecting scan statistics from a code that was printed static
There is no server in the path to count anything, so the data does not exist retroactively. The code has to be dynamic from the start for any number to be available at all.
Treating the redirect as something you can host yourself later
The short link in the pattern belongs to the generator that issued it. Moving away means printing new codes, which is worth knowing before committing a long print run to any provider.
Deciding which one you need
If the destination is settled and will not move, a static code is free, unlimited and permanent, and nothing in the path can fail. If the destination might change, or you want to know whether anyone is scanning at all, the code has to be dynamic from the beginning — the first two are free forever with a verified email address.
How dynamic QR codes workWhere the redirect pays for itself
- A printed menu card that points at a seasonal menu replaced four times a year.
- A conference banner reused next year with the new programme behind the same code.
- A product insert where the support page moves when the documentation is reorganised.
- A property sign that should point at the next listing once the current one sells.