Choose the right QR code print size

A QR code is a grid of squares called modules. Whether a phone can read it depends on how big each module ends up on paper, not on the overall size alone.

Think in modules, not centimetres

Every QR code is a square of modules. The smallest, version 1, is 21 × 21. Each version adds four modules per side, so version 2 is 25 × 25 and version 10 is 57 × 57. The version is chosen automatically from how much data you put in and the error correction level. A short link might fit in version 2 or 3. A full contact card with an address can reach version 10 or more.

Around the symbol you also need a clear margin, the quiet zone, of four modules on every side. So the printed width of a code, in modules, is:

width in modules = (17 + 4 × version) + 8

Divide the width you plan to print by that number and you have the size of one module. That figure is what the camera cares about. A phone has to resolve each module as a separate light or dark patch, and when modules get too small, blur and paper texture merge them.

A common working floor for close-range scanning is about 0.5 mm per module. It's the threshold our generator warns at, and below about 0.33 mm the scan check fails the print size outright. It isn't a figure from the QR standard. ISO/IEC 18004, the specification, defines the symbol in modules and leaves physical size to the application, because the right size depends on the camera, the distance and the print process.

Minimum sizes for versions 1 to 10

The table shows each version's module count, how many bytes of text it holds at error correction level M, and the smallest width that keeps modules at 0.5 mm with the quiet zone included. The last two columns show what happens to the module size when you print at a fixed width: 30 mm for something held in the hand, and 100 mm for a sign read from about a metre away.

QR code versions 1 to 10 with module counts, capacity and print sizes
VersionModulesBytes at MMin. width at 0.5 mmModule at 30 mmModule at 100 mm
121 × 211414.5 mm1.03 mm3.45 mm
225 × 252616.5 mm0.91 mm3.03 mm
329 × 294218.5 mm0.81 mm2.70 mm
433 × 336220.5 mm0.73 mm2.44 mm
537 × 378422.5 mm0.67 mm2.22 mm
641 × 4110624.5 mm0.61 mm2.04 mm
745 × 4512226.5 mm0.57 mm1.89 mm
849 × 4915228.5 mm0.53 mm1.75 mm
953 × 5318030.5 mm0.49 mm1.64 mm
1057 × 5721332.5 mm0.46 mm1.54 mm

Two things stand out. First, even a version 10 code can be printed quite small, about 33 mm, if the camera is close. Second, at a fixed 30 mm, the dense versions drop below 0.5 mm per module. A short link at 30 mm gives each module a millimetre; a long vCard at the same size gives it less than half that. Shorter content is the cheapest way to make a small code more reliable.

A rough guide to what fits: a short URL such as https://example.com/menu is version 2. A typical contact card with name, company, phone, email and website is around version 10 as a vCard and version 6 as a MeCard. A logo raises the error correction level, which can push the version up a step or two.

DPI and pixels

For print, a raster image's pixel count and its DPI (dots per inch) together set its physical size:

pixels = inches × DPI = (millimetres ÷ 25.4) × DPI

A 50 mm code at 300 DPI needs about 591 pixels across. What matters more is how many pixels each module gets, and that they divide evenly. If a module is 15.96 pixels wide, some modules render as 16 pixels and some as 15, with anti-aliased grey edges in between. Those soft edges are harmless on screen and sometimes visible in print. Our PNG export rounds the size so every module is a whole number of pixels: the 50 mm, version 3 example becomes 592 pixels with exactly 16 pixels per module, and the file is tagged with the DPI that makes it print at the width you chose.

Better still, skip the question. An SVG or vector PDF has no pixels, so it prints sharp at any size and your printer's RIP rasterises it at the press's full resolution. Send vectors to print shops whenever they accept them, and keep PNG for documents, slides and the web.

Screens

On a screen the same module logic applies in CSS pixels. A code shown at 200 CSS pixels wide on a phone is easy to scan from another phone. On a projector or a TV the code needs to be large relative to how far back people sit, which brings us to distance.

The distance ÷ 10 rule, and when it fails

A widely quoted rule of thumb says the code should be at least a tenth of the scanning distance across: 10 cm wide for one metre, 30 cm for three metres. It's a sensible starting point for a moderately dense code, around versions 3 to 5, in good light.

It goes wrong in predictable ways:

  • Dense codes need more. The rule ignores the module count. At 100 mm, a version 2 code has 3 mm modules and a version 10 code has 1.5 mm modules. If your content is long, scale up or shorten it.
  • Light and contrast. Dim rooms, backlit windows, glossy laminate and low-contrast colors all cut the usable distance. See thecontrast guide.
  • Angle. A sign seen from the side looks narrower to the camera than it is. Mount codes roughly face-on to where people stand.
  • Moving people. Someone walking past or sitting in a car won't stop to frame a shot carefully. Give them a larger code than the rule suggests, or put it where they naturally pause.
  • Cameras vary. Recent phones zoom and focus well; older or budget ones may not. A size that works on your phone is a best case.

Use the rule to get a first number, check the module size against the table, and then test a printed proofat the real distance.

A worked example

Say you're making a window poster for a café, to be scanned from the pavement about two metres away, and it links tohttps://example.com/menu.

  1. Distance ÷ 10 gives 200 mm as a starting width.
  2. The link fits in version 2: 25 modules plus 8 of quiet zone makes 33 modules across.
  3. At 200 mm, each module is 200 ÷ 33 ≈ 6 mm, which is generous.
  4. The poster is behind glass that reflects the street, so keep it at 200 mm rather than shrinking it, and test from outside at midday.

If the same poster linked to a long URL with tracking parameters, it might land on version 6 (49 modules with the quiet zone), and the modules at 200 mm shrink to about 4 mm. Still fine, but you can see where the margin goes.

Let the calculator do it

The QR code size calculator works this out for you: enter your content and how far away people will be, and it counts the real modules in your code and gives a print width and pixel size. In thegenerator, set the print width in the Download panel and the scan check reports the module size live.