Pro Tips for Android QR Scanning: Get It Right Every Time (Even in Low Light!)
Master Android QR scanning! Get pro tips for difficult codes, low light, and faster scans. Optimize your camera for seamless URL access ever...
A website URL QR code carries the address itself, so it keeps working offline, never expires, and points where you set it — permanently. The one thing worth checking before you print is length, because a longer address makes a denser code that has to be printed bigger to stay scannable.
This makes a static code: the address is stored inside the pattern itself. Nothing is looked up, no server of ours is involved when someone scans it, and there is nothing to keep paying for. It also means the destination is fixed at the moment you download the file.
That permanence is the whole trade. If you print ten thousand flyers pointing at example.com/spring-sale and the sale moves, the codes cannot be changed — but you can change what that address serves. Point printed codes at a URL you control and redirect server-side, and you keep the flexibility without paying anyone for a dynamic-code subscription.
Reach for a different type when the destination is not really a web page. A phone number belongs in a Telephone code, a network in a Wi-Fi Network code, contact details in a Contact Card (vCard 3.0) — each of those does something a URL cannot, like joining a network or writing to the address book.
A code moulded into packaging or screwed to a wall will be scanned for years. Point it at a permanent address on your own domain and redirect from there, so the destination can change when the product page does.
Apply the 10:1 rule to the room. A poster read from three metres wants a code about 30 cm across; a slide read from the back of a hall wants most of a slide. This is the most common reason a code that worked on the designer's screen fails in the room.
UTM parameters are free to add and not free to print. Measured with this generator: a 40-character address is 29 modules across, and the same address with a three-parameter UTM string is 41 — the same square holds 40% more detail, so it needs proportionally more paper.
Long paths, share links with tokens, a specific row in a catalogue. The code is worth having precisely where reading the address aloud is not an option.
Module counts below are for this generator, measured across the four error-correction levels. "Modules" is the count of squares along one side — more modules in the same physical space means each one is smaller, and small modules are what phone cameras fail on.
Uppercase the scheme and host and the code gets smaller. QR has a compact mode for a restricted character set — digits, A-Z, space and a few symbols — that stores about a third more per square than the general text mode. Lowercase letters fall outside it. Hostnames are case-insensitive, so HTTPS://EXAMPLE.COM/ reaches exactly the same place as the lowercase form: measured here, the same 40-character address drops from 29 modules to 25 at error correction L, and from 37 to 29 at Q. Stop at the path — everything after the host is case-sensitive on most servers.
The format's ceiling is far above anything practical: roughly 2,900 bytes at the lowest error correction. Long before that the code stops being scannable at a sane print size. Treat a few hundred characters as the working limit, and aim for at least 0.4 mm per module in print.
The address is stored in the clear. Anyone can decode a printed code and read exactly where it goes — which is worth remembering for share links that contain a token.