← Blog

QR codes explained: how they work and how to make one people actually scan

August 13, 2026

QR codes spent about fifteen years as a punchline and then quietly became infrastructure. Restaurant menus, payments, boarding passes, packaging, parcel lockers, event tickets.

What changed was not the technology. It was that phone cameras started reading them natively, so scanning stopped requiring a special app. The moment that friction disappeared, the format made sense.

What a QR code actually is

A QR code is a two-dimensional barcode: a grid of black and white modules encoding data, readable from any angle. "QR" is short for Quick Response. It was invented in 1994 by Denso Wave, a Toyota subsidiary, to track car parts faster than a traditional barcode allowed.

A few parts of the pattern are worth recognising, because they explain the design constraints:

Error correction is why the logo trick works

QR codes use Reed-Solomon error correction, at one of four levels. The highest, level H, can reconstruct the full contents with roughly 30% of the code damaged or obscured.

This is not a nice-to-have. It is why a code still scans with a coffee ring on it, a crease through it, or a logo dropped in the middle. Codes with a brand mark in the centre are simply generated at high error correction, with the logo covering area the maths can afford to lose.

The trade: higher error correction means more redundant data in the same code, which means a denser pattern. Push the logo too large and you cross from "recoverable" to "unreadable", usually without warning, because it will still scan on your desk under good light and fail on a wall in a dim room.

Static and dynamic

This distinction matters more than any other choice you will make.

A static code has the destination encoded directly in the pattern. The URL is literally in there. It works forever, needs no service behind it, and can never be changed. Print it wrong and the only fix is reprinting.

A dynamic code encodes a short redirect URL. The pattern points at a service, and the service forwards to wherever you currently want it to go. You can change the destination after printing, and you get scan statistics.

Neither is better. They fail differently, and it is worth understanding how dynamic QR codes work and where they break before committing a print run to one.

The rules that decide whether it scans

Most failed QR codes fail for dull, preventable reasons.

Size

The working rule is distance divided by ten. A code read from 30 cm needs to be about 3 cm across. A code on a wall read from 3 metres needs to be about 30 cm across.

Then add margin, because that formula assumes a decent camera, good light and a still hand. Real conditions are worse than your test conditions, always.

Below about 2 cm you are relying on the scanner having a good macro focus. Do not.

Contrast

Dark pattern on a light background. Every time.

Inverted codes -- light pattern on dark -- fail on many scanners. Some read them, many do not, and you will not find out which until it is printed. The scanner is looking for dark modules on a light field, and inverting that breaks the assumption.

Low-contrast pairings fail the same way: grey on white, navy on black, any pastel on any other pastel. If you would struggle to read text in those two colours, the camera will struggle with the code.

The quiet zone

The blank margin around the code is part of the code. The specification asks for four modules' width of clear space. Crowd the edges with text or a border and scan reliability drops, particularly on busy backgrounds.

Surface and placement

Give people a reason

A bare QR code with no label gets ignored. Three or four words telling people what happens if they scan will do more for your scan rate than any technical adjustment on this list.

"Scan for the menu." "Scan to see the price list." "Scan for 10% off." Anything concrete beats "Scan me", which says nothing.

Test it properly

Before it goes to print:

Where QR codes work well

Where they do not

What else can go in one

URLs dominate, but a QR code is just encoded text, and standard formats exist for:

The offline formats -- Wi-Fi, vCard, plain text -- have a real advantage: they work with no internet connection and no service behind them, because the data is genuinely in the pattern.

A short checklist


Klick.ing generates a QR code for every page and every short link, with scan tracking included. Create a free account to make one.

← Back to all posts