TOOLTIKI Lovable tool, really free

A QR code is text with error correction

A QR code contains its own content. Nothing is looked up, nothing is fetched, and no service sits behind it — the pattern of squares is the text, encoded directly, and a scanner reads it the way a page reads letters.

Everything that makes a code work well or badly follows from that. Longer text needs more squares; more squares in the same printed area means smaller squares; smaller squares are harder for a camera to resolve.

What are the parts of the pattern?

Most of it is data and a fixed amount is scaffolding. The three large squares in the corners let a scanner find the code and work out its rotation, the smaller square near the fourth corner corrects for the angle it is viewed at, and the dotted lines between the corners set the grid spacing.

The blank margin around the outside is part of the code rather than packaging. Four squares’ width of clear space is required, and cropping it away is the single most common reason a printed code refuses to scan.

The size grid is fixed: the smallest version is 21 squares across and each step up adds four, to a maximum of 177. A generator picks the smallest version that fits the content, so shortening the text is what makes the squares bigger.

What does the error correction level do?

Adds redundancy, at the cost of space. Four levels exist, each able to reconstruct a different share of a damaged code.

Level Recoverable Effect
L about 7% smallest code
M about 15% the usual default
Q about 25% busy environments
H about 30% allows a centre logo

The highest level is what makes a logo in the middle possible. Covering part of the pattern is damage, and at that level roughly a third of the code can be lost and still reconstructed — so a logo sized within that budget is invisible to the scanner.

The trade is real. Raising the level adds data, which raises the version, which shrinks every square. For a large printed poster that costs nothing; for a code on a business card it can be the difference between scanning and not.

Why do the specialised codes work?

Because they are conventions for the text, not different kinds of code. A code that joins a Wi-Fi network contains a short string naming the network type, name and password in a documented format, and the phone recognises the format.

The same is true throughout: a contact card is a vCard, an email is a mailto address, a phone number is a tel link, a location is a geographic URI, a calendar entry is a small iCalendar event. Every one is plain text a scanner knows how to act on.

Knowing that changes what you expect. Nothing about the code is proprietary, nothing expires, and anything readable as text can be encoded — which also means a password inside a Wi-Fi code is readable by anyone who scans it.

Can a code be changed after printing?

Not the code itself. The pattern is fixed the moment it is printed, so a code containing a URL will always contain that URL.

The way around it is indirection: encode a short link you control and change where that link points. The code stays the same and the destination moves, which is what every dynamic QR service sells.

It is worth being deliberate about that dependency. A code printed on something long-lived that points through a third-party redirect stops working when that service does, and the printed item cannot be updated.

What makes a code scan badly?

Low contrast, a missing margin, and inversion. Scanners expect dark on light, and a light code on a dark background fails on a meaningful share of devices even though the pattern is intact.

Print size is the other half. A rough guide is that a code needs about a tenth of its scanning distance in width — a code read from two metres needs to be around twenty centimetres across — and shortening the encoded text is usually easier than making the code bigger.

Curved surfaces, laminated finishes and low-resolution printing all cost margin against the error correction budget. Testing the actual printed article with an ordinary phone camera is the only check that means anything.

Colour is safer than it used to be and still worth restraint. Scanners work on the difference in brightness between the light and dark modules, so a mid-tone pattern on a mid-tone background can fail while looking perfectly clear to a person — the test is whether the code still reads when converted to greyscale.

Questions people ask

Should I print the URL underneath? Yes, for anyone who cannot or will not scan. It costs a line and removes a dead end.

Do QR codes expire? The code does not. A link inside it can stop working.

Can one hold a whole document? In principle a few kilobytes, in practice no. The code becomes too dense to scan long before that.

Is scanning tracked? Not by the code. A link inside it can be, like any other link.

Why does mine scan on one phone and not another? Usually margin or contrast. Both are marginal rather than binary, so devices disagree.

Encode the shortest thing that works. The QR code generator handles arbitrary text and links, and the format-specific ones cover Wi-Fi, contact cards, email, phone, SMS, location, calendar events, WhatsApp and app store links.