How to Print QR Codes That Scan Reliably

By QR Hut team · Published · 7 min read

A QR code that works perfectly on your monitor can fail on a menu, a poster or a product label. Almost every failure comes down to five things: how much data the code holds, how large it is printed, the contrast between its colors, the blank margin around it and the error correction level. This guide explains each one and ends with a checklist to use before anything goes to the printer.

1. Start with less data

A QR code is a grid of square modules. The more characters you encode, the more modules the grid needs: version 1 is 21 × 21 modules, each following version adds four modules per side, and version 40 reaches 177 × 177. When the printed size is fixed, say a 3 cm square on a label, more modules simply means smaller modules, and small modules are what phone cameras struggle with.

The difference is easy to see in our QR code generator, which shows the version under the preview. The address https://example.com/menu (24 characters) becomes a version 3 code with 29 × 29 modules at error correction level M. A 150-character link full of tracking parameters needs version 9 at the same level: 53 × 53 modules. Printed at the same width, each module of the long link is only a little more than half as wide.

Practical ways to shrink the content:

Link shorteners also shrink codes, but they add a third party and show an unfamiliar domain in the phone's preview. A short path on your own domain is usually the better short link.

2. Choose the right size

There is no single official minimum size, because it depends on how dense the code is and how far away people will be. A widely used rule of thumb is a distance-to-size ratio of about 10:1: the code should be at least a tenth as wide as the scanning distance. Treat the figures below as starting points for a short link, not as guarantees, and go bigger for denser codes.

Where it is scannedTypical distanceStarting width
Business card, label, packaging15–25 cm2–2.5 cm (0.8–1 in)
Menu, flyer, table card30–40 cm3–4 cm (1.2–1.6 in)
Poster on a wall1–2 m10–20 cm (4–8 in)
Shop window, banner3–5 m30–50 cm (12–20 in)

In module terms, a version 3 code plus its quiet zone is 37 modules across, so at 3 cm each module is about 0.8 mm. The 150-character link (61 modules with the margin) leaves just under 0.5 mm per module, where cheaper phone cameras start to hesitate.

Resolution matters too. At 300 dots per inch, a common print resolution, a 1024-pixel PNG covers about 8.7 cm (3.4 in). Anything larger should use an SVG file, a vector format that stays sharp at any size. Avoid enlarging a small PNG in a layout program: module edges blur, and blurred edges are harder to read.

3. Keep strong contrast

Scanners turn the image into black and white by comparing brightness, so the dark modules must be clearly darker than the light ones. Most scanners also expect the familiar arrangement of dark modules on a light background.

QR Hut's generator shows a warning when the brightness difference between your two colors is small or when the foreground is lighter than the background.

4. Respect the quiet zone

The QR Code standard, ISO/IEC 18004, requires a blank margin at least four modules wide on every side of the symbol. Scanners use this quiet zone to find where the code starts and ends. Trimming it, or pushing the code against a border or photo, is one of the most common reasons a printed code fails.

Files downloaded from QR Hut already include the four-module margin in the background color. Keep it when you place the file, and if the surrounding area is dark or busy, make sure the margin stays light.

5. Pick an error correction level

QR codes contain Reed–Solomon error correction, which lets a scanner rebuild parts that are missing or damaged. Level L can restore about 7% of the data, M about 15%, Q about 25% and H about 30%.

Higher is not automatically better. The redundancy takes space, so a higher level needs more modules for the same content: our 24-character menu link is version 3 at level M but version 4 at level H.

A center logo deliberately covers part of the code and relies on error correction to fill the gap. Keep it small (QR Hut limits it to 22% of the code's width, about 5% of its area), use level H, and never cover the three large squares in the corners, which scanners need to locate the code.

6. Materials, surfaces and placement

7. Test before you print a batch

Before ordering hundreds of copies:

  1. Print one proof at the final size, on the final material if you can.
  2. Scan it with at least two different phones, ideally an iPhone and an Android phone, using their built-in camera apps. Include an older or budget phone if one is available.
  3. Scan from the distance and angle your audience will use, in similar light.
  4. Check the destination: does the page load quickly on mobile data and look right on a small screen?
  5. Test again after lamination or varnish, which can add glare.

You can also photograph the proof and upload the picture to our QR code scanner, which shows exactly what the code contains. A desktop decoder is not identical to a phone camera, so keep phones as the final test.

Checklist