Static vs Dynamic QR Codes
What the redirect actually buys you, measured on real encoded codes, and which payloads are worse off for it.
16 min readPoint a camera at it and the phone shows your number and offers to call. No app, no typing a number off a van door at a traffic light.
Type it with the country code. The number as printed on your shopfront works for everybody standing in your country and quietly fails for everybody else.
Your code appears here as you type.
A phone code contains one line of text: tel: followed by the number. The spec, RFC 3966, prefers the global form, a leading plus and then digits with no spaces or brackets. A number without the plus still dials for anybody already on that national network, which is exactly what makes it dangerous: you test it, it works, and it fails for the visitor from abroad who is the reason you printed it.
Separators are dropped rather than encoded. Enough scanners mishandle a bracket that the safe form is digits and a plus. Here is the same London number four ways.
| What you enter | What the scanner reads | Version | Modules | Print at least |
|---|---|---|---|---|
| Typed the way it is printedBrackets and spaces are dropped. Dials at home, fails abroad. | tel:0207946001815 characters | 1 | 29 | 11.6 mm |
| With the country codeThe RFC 3966 global form. Dials from anywhere. | tel:+44207946001817 characters | 1 | 29 | 11.6 mm |
| Written with the 00 prefixRewritten to a plus, which is the form phones outside your region understand. | tel:+44207946001817 characters | 1 | 29 | 11.6 mm |
| A US number in fullSeparators removed. Note the module count barely moves: a phone code is tiny. | tel:+1415555013216 characters | 1 | 29 | 11.6 mm |
A tel link is about fifteen characters, so it encodes at a very low version with few modules, and few modules means it stays readable when printed small. That makes it the payload that fits where nothing else does: a business card corner, a badge, the side of a tool, a sticker on a meter.
If you want the number to arrive in somebody's contacts rather than just be dialled, the contact card tool does that instead. It carries far more, so it prints considerably larger, which is the trade. For a written reply rather than a call, the SMS code can carry a prefilled message, and the email code can carry a subject line.
The phone shows the number and asks whether to call it. It does not dial on its own. On a laptop the same code usually opens whichever calling app is installed, or nothing if there is none.
Yes, if anybody outside your country will scan it. Without a leading plus and the country code the number only resolves for people already on that national network. The tool warns you when the number has no country code, and rewrites a 00 prefix to a plus.
Not reliably. RFC 3966 has syntax for it, and handling across phones is inconsistent enough that a code with an extension often dials the main number and drops the rest. Print the extension as text next to the code instead.
Because there is almost nothing in it. A tel link is about 15 characters, so it encodes at a very low version with few modules, which means it stays readable at a small printed size. It is the cheapest payload on this site apart from a short URL.
A call code for anything urgent, an SMS code when you want a written record or the person is unlikely to want to talk. The SMS version can also prefill the message, which is useful for a reference number or a table number.
Contact cards, Wi-Fi, and forms people fill in.
What the redirect actually buys you, measured on real encoded codes, and which payloads are worse off for it.
16 min readThe usable square inside a round sticker is 70% of its diameter. Measured minimum sizes for real links, against every common sticker size.
8 min readWhat each platform already ships, the measured cost of each payload type, and how to check an offline claim yourself.
26 min read