QR codes have firmly settled into the offline world: menus, payments, tickets, business cards, packaging. A good QR code needs no app and no explanation — point the camera, tap, done. Here is a short guide to how it works under the hood and how to make a code that scans reliably.
How a QR code is built
QR (Quick Response) is a two-dimensional barcode: your text is encoded as a matrix of dark and light modules that a camera reads in a fraction of a second. The three large squares in the corners help the scanner locate the code and work out its orientation; the rest of the area carries the data. The crucial detail is built-in error correction (Reed–Solomon codes): some modules duplicate the information, so the code stays readable even when it is partly scratched, smudged or covered by a logo. The higher the correction level, the denser the pattern — and the more damage the code survives. A QR code itself is static: it is simply a way to write text into a picture. There is no server behind it — whatever you encode is exactly what the scanner gets.
What you can encode
- A link —
https://…: the phone opens it in the browser. - Plain text — a note, a serial number, a promo code.
- A phone number —
tel:+447732729492: scanning offers to place a call. - An email —
mailto:[email protected]: opens the mail client. - Wi-Fi — a string like
WIFI:T:WPA;S:NetworkName;P:password;;lets guests join your network without typing the password.
Printing tips
- Size. 2×2 cm is enough for a business card; for a poster, work from the scanning distance: the code's side should be roughly one tenth of it (a 10 cm code reads comfortably from a metre away).
- Contrast. A dark code on a light background is the classic for a reason: that is what scanners handle most reliably.
- Margins. Leave a clear "quiet zone" around the code, at least four modules wide. Don't squeeze it against text or the edge of the layout.
- Test. Before the print run, scan a proof with several phones under different lighting. One minute of testing saves reprinting the whole batch.
Common mistakes
The most common one is an overly long URL: an address with two hundred characters of UTM tags makes the matrix fine-grained and fussy in print. Shorten the link and the code becomes larger and more robust; our ecosystem has Urlik (urlik.xyz) for exactly that — shorten the address, then encode the short link. The second mistake is inverted colours: many scanners simply refuse to read a light code on a dark background. Finally, go easy on the "branding" — gradients, inserts and stylised modules eat into the error-correction margin, and the code stops scanning in less-than-perfect conditions.