Home Dynamic QR
Dynamic QR Codes
Print the code once. Decide where it goes for as long as it is in the world.
Wash House puts one vinyl sticker on every machine door, printed by the machine supplier. Changing it means visiting every site with a heat gun, and the person scanning it is standing in front of the machine holding a bag of wet laundry.
The rule engine
What the scanner gets
External destination
https://apps.apple.com/app/example
This branch leaves for a page somebody else owns, so there is nothing of ours to show.
Straight to the store listing. No splash page asking somebody in a laundrette which phone they are holding.
Desktop is matched positively against known desktop platforms rather than inferred from the absence of a phone, so an unknown agent falls through to the default. Two of these branches leave for an app store, which is somebody else page and is shown as one.
Get this wrong and an Android customer at the machine lands on an App Store page telling them the app is unavailable. The vinyl is already on the door; the rule is the only part still editable.
no subscription · pay per scan · nothing to cancel
The reprint is the real cost
A static QR code carries its destination in the pattern itself. That makes it permanent, which is a feature right up until the destination moves. Then the only edit available is a new print run.
- The campaign ended, and the poster still points at it.
- The menu moved to a new host, and ten thousand table tents did not.
- One code has to serve readers in four countries, and it can hold one URL.
- You need to know whether anyone scanned it, and a static code touches no server that could count.
What the indirection buys
Three steps, and only the first one involves a printer.
The code encodes a short URL
Not your destination · a short URL on a host you or we control. That string is written once and is on physical things, so it never changes.
https://tap2u.link/mk4Qp2A scan arrives with signals
The scanning phone brings country, language, user agent and local time with it. Nothing is asked of the reader and no cookie is set.
Rules pick the destination
The first matching rule wins, and anything unmatched falls through to your default. Evaluation happens at the edge, in the same request as the redirect.
{ "geo": { "DE": "https://example.de/menu" } }
What one printed code can do afterwards
- Point somewhere else, whenever
Repoint it as often as you like. You paid 1 credit to create the code, once.
- Answer differently by market
geoGroup countries and give each group its own destination. Anything ungrouped takes your default.
- Answer in the reader language
langReads the preference the browser already sends, exact tag first and primary subtag second, so en-GB can differ from en.
- Open the right app store
deviceiOS, Android and optionally desktop. Unknown agents and crawlers fall through rather than being guessed at.
- Know what time it is
scheduleRecurring day-and-hour windows in a timezone you pin, or a one-time switch at a fixed moment.
- Test two pages from one print run
splitWeighted split, sticky per scanner so one person does not flip between variants on a second scan.
- Tell your channels apart
sourceRoute on the campaign tag or the referring host, so the same artwork in print and in email can answer differently.
- Nothing on file to renew
Prepaid credits. 1 credit to create a code, once, and 1 credit per scan. Credits stay valid 18 months.
What one code can carry
A dynamic code does not have to hold a web address. Pick a kind and the same printed square becomes a contact card, a WhatsApp chat, a phone number or a network password. The price is identical for all of them: 1 credit to create the code, once, and 1 credit per scan. What changes is what the phone does when it reads it.
| Kind | What the scan does | How it resolves |
|---|---|---|
| url | The browser opens the page you pointed it at, and routing rules decide which one. | Redirect |
| WhatsApp opens on a chat with your number, with your first message already typed if you wrote one. One tap, no number to save first. | Redirect | |
| vcard | A contact page opens with your details and a Save button. One tap writes the card into the phone address book. | Hosted page |
| tel | A page with a real call button. Tapping it dials, which is more reliable than a redirect: an in-app browser silently drops a tel: redirect and a printed code that does nothing inside Instagram cannot be recalled. | Hosted page |
| A page whose button opens a new draft addressed to you, with the subject and body you prefilled. | Hosted page | |
| wifi | A page showing the network name and password, with a copy button next to each. It cannot join the network for the reader. No phone lets a web page do that, so a static WIFI: code is still the one that connects in one tap. What the dynamic version buys is changing the password without reprinting the table tent. | Hosted page |
| sms | A page whose button opens the messages app with your number and your text ready to send. | Hosted page |
| location | The maps app opens on the pin, ready to navigate. | Redirect |
| event | A page with the date, time and place, offering a calendar file the phone imports. | Hosted page |
| text | A page showing the words you wrote. Useful when the thing to convey is an instruction rather than a link. | Hosted page |
A redirect, or a page you own
| Capability | taproute | A static code of the same kind |
|---|---|---|
| Editable after the print run The reason to buy either one. A static code answers with what was printed, forever. | Yes, as often as you like | No, the payload is the pattern |
| What the symbol carries Which is why the dynamic symbol prints coarser at the same width. Fewer modules over the same square means each one is wider, and a wider module survives distance and bad printing. | The short link, 25 modules across | The whole payload, up to 61 modules for a contact card |
| Works with no account behind it The honest half. A static code has no service between the scan and the payload, so nothing can pause it. Ours pauses after the grace window and says so on a branded page. | No, a scan resolves through us | Yes, nothing to switch off |
| Joins a WiFi network in one tap No phone lets a web page join a network. If the password never changes, the static code is the better object. | No, it shows the password to copy | Yes |
| Counts its scans A static code touches nothing that could count. | Yes, every scan | No, nothing is asked of a server |
| Costs anything per scan Our free studio makes the static ones in your browser and never charges for them. | 1 credit | Nothing |
What it costs
Prepaid credits, no subscription. 1 credit to create a code, once, and 1 credit per scan. Credits stay valid for 18 months.
- Starter $15 3,900 scans
- Basic $39 15,600 scans
- Pro $79 36,400 scans
- Growth $149 100,000 scans
- Scale $299 325,000 scans
- Volume $799 1,300,000 scans
Questions
Can I change the destination after the code is printed?
Yes, and that is the reason to buy one. The printed payload is written once because it is on physical things, but where that payload leads is yours to edit for as long as the code exists.
What happens to the code if I stop paying?
On a paid account a grace period runs for 14 days or 5 percent of your last pack, whichever ends first. After that a code pauses and serves a branded page saying so. It is never deleted, the address is never given to another link, and topping up resumes it instantly on the same URL. The 30 credit trial has no grace window.
What does a dynamic code cost?
Prepaid credits, no subscription and no per-code monthly fee: 1 credit to create a code, once, and 1 credit per scan. A custom routing rule is 5 credits, every change · add, edit or remove · a save that changes nothing is free. Credits are valid for 18 months and any top-up rolls the whole balance forward.
Does routing slow the scan down?
Rules are evaluated at the edge in the same request that issues the redirect, so there is no extra round trip. The reader gets a 302, not a landing page that then decides where to send them.
Can I automate routing through the API?
Not the routing graph. Creating and updating codes is available programmatically, but the flow engine is built in the browser and is not reachable from the API today. If unattended rule changes are a requirement, that is a real gap and worth knowing before you build on it.
Do I need a dynamic code for a WiFi or contact card?
Ask one question: could this ever change? A network password that never rotates and a phone number you have had for a decade are genuinely static, and our free studio makes those in your browser at no charge. A job title, a new number or a password you rotate every season are not, and every change to a static code is a reprint of everything carrying it.
Why does a dynamic contact card scan from farther away than a static one?
Because it carries less. A contact card with a name, company, title, phone, email, website and address encodes as 61 modules across, QR version 11. The dynamic version encodes only the short link: 25 modules, version 2. Print both at the same width and the dynamic one has modules about 2.4 times wider, which is what decides how far away a camera can still resolve them and how much bad printing they survive. Adding fields to the card does not move the dynamic symbol, because the fields live on the page rather than in the pattern.
If I pick a contact card, why do I get a page?
Because a redirect cannot install a contact, join a network or open a calendar entry. Seven of the ten kinds are minted as a hosted page carrying one prefilled block, and that page is yours from the moment it exists: rebrand it, add to it, or leave it exactly as it arrived. It bills like any other page, which is 1 credit per scan and nothing extra for being a contact card.