How big to print a QR code

A QR code needs to be roughly one tenth as wide as the distance it will be scanned from. A code read at arm’s length — about 30 cm — needs to be around 3 cm across; one on a poster read from 3 m needs to be 30 cm. That rule holds because scanning depends on the camera resolving individual modules, and module size is the code width divided by however many modules the payload forced it into.

So the two decisions that set the print size are the length of the data and the error correction level, and both of them push in the same direction.

How does the payload change the grid?

A QR code comes in versions, each a fixed grid. Version 1 is 21 × 21 modules and each step up adds four modules in each direction. More data means a higher version, which means more modules in the same physical space.

Payload ECC L ECC M ECC Q ECC H
20-character URL 25 × 25 25 × 25 25 × 25 29 × 29
26-character URL 25 × 25 25 × 25 29 × 29 33 × 33
40-character Wi-Fi string 29 × 29 29 × 29 33 × 33 37 × 37
95-character tagged URL 37 × 37 41 × 41 49 × 49 53 × 53

Read the bottom row. Adding UTM parameters to a link takes a 25-module code to 41 at the same error correction level — the modules are now 1.64 times smaller at the same printed size, and the code needs to be 1.64 times larger to scan from the same distance.

Which error correction level should you use?

The four levels recover from roughly 7, 15, 25 and 30 per cent damage, and each step costs modules.

  • L, about 7%. Screen display, and print where nothing will touch it.
  • M, about 15%. The sensible default for most printed material.
  • Q, about 25%. Labels on curved or handled surfaces, industrial settings.
  • H, about 30%. Where a logo is placed over the centre, or where the surface will be scuffed.

The logo case is the one people meet. Covering the middle of a code is only safe because the error correction can reconstruct what is hidden, so a logo needs level H and needs to stay well under 30 per cent of the area — and the code has to be tested, not assumed.

What is the quiet zone?

A margin of four modules of clear space on every side, required by the specification. Without it a scanner cannot reliably find where the code begins, and the most common cause of a code that "sometimes works" is artwork placed too close to it.

It has to be quiet, not white. A pale background is fine; a pattern, a photograph or a border is not. Four modules on a 25-module code is 32 per cent of the symbol width added on each axis, which is more space than most layouts allow for, and it is not optional.

What else stops a code scanning?

Four things, in rough order of frequency.

  1. Inverted colours. Most scanners expect dark on light. Light on dark fails on a meaningful share of devices.
  2. Insufficient contrast. Mid-grey on light grey looks refined and does not resolve.
  3. Print at the wrong size, which is the rule at the top of this piece.
  4. Glossy or curved surfaces, where reflections wipe out part of the grid — a case for level Q or H.

Test on the actual medium before printing a thousand of them. A code that scans perfectly on a monitor can fail on matte stock at the size it will actually appear.

Does the code ever expire?

Not if the data is inside it. A code containing a URL contains that URL and will keep producing it forever, with no server involved and nothing recorded when it is scanned.

Free QR services usually give you something different: a short redirect link owned by them, which lets them count scans and lets the code stop working when their pricing changes. That is the trade — a redirect is smaller and denser to print, and it depends on a company still existing.

If density is the problem, shorten the URL with a service you expect to outlive the campaign, then generate a static code from the short link. That keeps the code simple and moves the dependency somewhere you chose deliberately.

Questions people ask

Can you see what I scan? Nothing is recorded. The code is generated in the browser from what you typed, and there is no server to log against.

PNG or SVG? SVG for print, because it scales to any size without softening. PNG for screens and for systems that will not take vector artwork.

Why did the code get denser when I added text? Because more data means a higher version, which means more modules. The physical size stays the same and the modules shrink, which is why density and print size are the same decision.

Can a QR code hold a Wi-Fi password? Yes, as a structured string that phones recognise and offer to join. It is plain text inside the code, so anyone who scans it has the password — which is the point for a guest network and a problem for anything else.

Size from the scanning distance, then check the payload has not pushed the module count up. The QR code generator shows the version as you type, the barcode generator covers the linear codes retail needs instead, and the UTM link builder is what makes those URLs long in the first place.