QR code size for print: The numbers that actually matter

Short answer: print a QR code at least 2 cm (0.8 in) wide, and about one tenth of the distance it is scanned from. The table below gives every common size in cm and inches.

By QRotto · Published · Updated · 7 min read

Most printed QR codes that fail do so for one reason: they were sized to fit a layout rather than sized to be scanned. The good news is that the maths is simple, and there is a single ratio that answers almost every question about print size.

The 10:1 rule

A QR code should be at least one tenth as wide as the distance it will be scanned from. Scanning from 30cm away? Print at 3cm. From two metres? Print at 20cm. From across a car park at ten metres? You need a metre wide code.

This ratio comes from how phone cameras resolve the individual squares (called modules) that make up the pattern. Below a certain angular size the camera cannot distinguish one module from the next, and the scan fails regardless of how good the printing is.

Two adjustments to the rule in practice: add a margin for error, because people do not stand at the ideal distance, and round up rather than down. A code that is slightly too big costs nothing; one that is slightly too small fails silently and you never find out.

Practical size table

Where it goesScan distanceMinimum sizeComfortable size
Business card20 to 30 cm (8 to 12 in)2 cm (0.8 in)2.5 cm (1 in)
Restaurant table card30 to 50 cm (12 to 20 in)3 cm (1.2 in)4 to 5 cm (1.6 to 2 in)
Product packaging20 to 30 cm (8 to 12 in)2 cm (0.8 in)2.5 to 3 cm (1 to 1.2 in)
Flyer or leaflet30 cm (12 in)2.5 cm (1 in)3 cm (1.2 in)
A4 or Letter poster on a wall1 m (3.3 ft)10 cm (4 in)12 cm (4.7 in)
Shop window1.5 to 2 m (5 to 6.5 ft)15 to 20 cm (6 to 8 in)25 cm (10 in)
Vehicle livery3 to 5 m (10 to 16 ft)30 to 50 cm (12 to 20 in)60 cm (24 in)
Billboard10 m+ (33 ft+)1 m+ (3.3 ft+)1.5 m+ (5 ft+)

The absolute floor for any printed code is about 2 cm (0.8 in) per side. Below that, even close range scanning becomes unreliable on older phones.

QR code size on a business card

On a standard US business card (3.5 by 2 in), print the code at least 0.8 in (2 cm) wide, and 1 in (2.5 cm) if there is room. Keep the content short: a link to your contact page fits that size easily, while a full contact card makes a denser code that needs more space. Our guide to QR codes on business cards measures exactly what fits.

Why data length changes the answer

Two codes printed at exactly the same size can behave completely differently, because the amount of data determines how many modules are packed into that area.

A short URL might produce a 25×25 module grid. A long vCard with an address and several phone numbers might produce a 57×57 grid. Printed at the same 3cm, the second code has modules less than half the width of the first, and scans far worse.

Shorter data, bigger modules, better scans. If a code must be small, reduce what it contains rather than hoping the printer resolves it.

Practical ways to shorten data: use a short URL rather than one with tracking parameters; drop optional vCard fields; keep text codes under 100 characters.

The quiet zone, the most broken rule

Every QR code needs clear space around it, called the quiet zone. The specification calls for a margin of four modules on all sides. In plain terms: leave a white border roughly as wide as four of the small squares in the pattern.

Designers break this more than anything else, because an empty white margin looks like wasted space in a layout. It is not decoration, the scanner uses it to find where the code begins. A code cropped tight to its edge, or with text running right up against it, may not be detected at all.

Contrast, colour and finish

Contrast

Dark modules on a light background. Black on white is ideal. If you must use brand colours, keep the modules dark and the background light, never the reverse, and never a midtone on a midtone.

Inverted codes, light modules on a dark background, are readable by many modern scanners but not all. For anything printed at volume, do not risk it.

Finish

Matte beats gloss every time. Glossy lamination reflects overhead lighting straight into the camera, producing a bright patch across part of the code. This is a frequent cause of restaurant table cards that work in the afternoon and fail under evening lights.

Print method

Digital and offset printing both reproduce codes well at these sizes. Where problems appear is in low resolution processes, some embroidery, low DPI thermal receipt printers, and heavily textured stock. On textured or fabric surfaces, increase the size by 30 to 50% beyond the table above.

Error correction and why it is a tradeoff

QR codes include redundancy so they still scan when partly damaged. There are four levels, from roughly 7% recovery up to about 30%.

Higher error correction sounds strictly better, but it adds data, which adds modules, which makes each module smaller at a given print size. For clean indoor printing, standard levels give the best results. Raise it only for codes that will be exposed to wear, outdoor signage, packaging that gets scuffed, or codes with a logo placed over them.

Logos in the middle

A logo covers modules and relies on error correction to recover them. It works, within limits: keep the logo under about 15% of the code area, place it centrally, and always increase the print size when a logo is present.

For a code that must work first time in an unpredictable environment, a guest arriving at night, a customer in a dim restaurant, the plain version is measurably more reliable.

Test before the print run

Testing on screen is not testing. The two checks worth doing:

  1. Print one at final size on the actual stock, then scan it at the real distance, in the real lighting, with an ordinary phone, not the newest one in the office.
  2. Scan at an angle. People rarely hold a phone perfectly square to a poster. If it reads at 30 degrees off axis, it will survive real use.

Do this before ordering 500 copies, not after.

Checklist

Generate your code at whatever size you need from our URL generator, WiFi generator, vCard generator or text generator, all free, all generated in your browser. The error correction documentation has the full technical detail if you need it.

Sizing for unusual surfaces

The table above assumes flat paper or card. Several common surfaces need adjustment:

Digital displays are a different problem

A code on a screen, a TV in a lobby, a presentation slide, a phone showing a code to another phone, follows different rules. Screen brightness usually helps, but two things hurt:

For screens, a reasonable starting point is to make the code a substantial share of the screen height, roughly a sixth or more, for anything scanned from a few metres away, then test it at the real distance.

Two mistakes that survive all the checks

Scaling a raster image up

If you generate a code at 200 pixels and your designer scales it to fill a 20cm poster area, the result is a blurry code with soft module edges. Always generate at or above the final print resolution, for print, aim for at least 300 DPI at final size, meaning a 5cm code needs roughly 600 pixels.

Letting a layout tool "optimise" the image

Some design and web tools compress images aggressively or convert them to formats with lossy compression. A QR code is exactly the kind of high contrast, hard edged image that compression damages most visibly. Keep codes as PNG, never JPEG.

A quick checklist before printing

  1. Generated at 300 DPI or higher for the final print size
  2. Saved as PNG, never JPEG
  3. Quiet zone intact, nothing cropped or overlapping
  4. Dark modules on a light background
  5. Matte finish specified with the printer
  6. One test copy printed on the real stock and scanned at the real distance, at an angle, in the real lighting, on an older phone

That last line is the one that matters most. A single test print catches the kind of problem that is expensive to discover after a full run.

Four QR codes shown at the same physical size, holding 18, 85, 296 and 812 characters. The grid goes from 25x25 modules to 109x109, so each module gets progressively smaller.
The same physical size, four different amounts of data. We generated these and decoded each one back to confirm it was readable.

Those four codes are the same width on the page, but the grid behind them is not. Here is what we measured when generating them, and what each would mean printed at 3cm across:

DataVersionGridModule size at 3cm
18 characters225 x 251.20mm
85 characters641 x 410.73mm
296 characters1369 x 690.43mm
812 characters23109 x 1090.28mm

All four decoded correctly as digital images. The difference shows up in print: at 3cm, the 812 character code puts each module at 0.28mm, below the 0.4mm figure above, while the short one has over four times that to work with. Same printed square, very different odds of a first time scan.

Understanding versions and modules

Two terms explain most sizing behaviour, and knowing them makes the rest intuitive:

The version is chosen automatically based on how much data you encode. This is why data length and print size are the same problem viewed from two directions: at a fixed physical size, more data means a higher version, more modules, and therefore smaller modules.

A practical target: aim for modules of at least 0.4mm when printed at high quality, and 0.6mm or more for general use. Divide your intended code width by the number of modules per side to check.

Encoding modes and why they matter for size

QR codes store different character types with different efficiency, which directly affects how dense your code becomes:

ModeCharactersEfficiency
NumericDigits onlyMost efficient, most data per module
AlphanumericUppercase, digits, a few symbolsEfficient
Byte / UTF-8Mixed case, most URLs, accentsLess efficient
KanjiJapanese charactersSpecialised

A practical consequence: a URL written entirely in uppercase can encode more efficiently than the same URL in mixed case, because uppercase fits alphanumeric mode. Domain names are case insensitive, so HTTPS://EXAMPLE.COM/MENU works identically to the lowercase version while producing a slightly simpler code. It looks unusual, but for a code that must be small, it is a free improvement.

Two QR codes holding identical data. The standard dark on light version decoded correctly; the inverted light on dark version failed to decode.
Identical data, two renderings. We ran both through a standard QR detector: the inverted one failed to decode at all.

We tested this rather than assuming it. Both codes above encode exactly the same URL. The standard version decoded correctly; the inverted version was not detected. Some scanners handle inversion and some do not, which is the whole problem, you cannot tell which one your reader is holding.

Colour, inversion and brand constraints

Designers frequently ask whether a code can match brand colours. The honest answer is "within narrow limits":

What each sign size gives you

With a short link, 19 characters, every one of these is a 25 by 25 grid. Add the four module quiet zone on each side and you are dividing the printed width by 33:

SignCode sizeOne moduleBlur it tolerates
Business card back20 mm0.61 mm0.24 mm
Sticker35 mm1.06 mm0.42 mm
Table tent45 mm1.36 mm0.55 mm
Counter card60 mm1.82 mm0.73 mm
Wall poster100 mm3.03 mm1.21 mm
Window sign150 mm4.55 mm1.82 mm

Put the first row next to something real. A quarter of a millimetre is roughly the thickness of three sheets of paper. That is the entire blur budget of a business card code, and it has to cover the printer's ink spread, the paper's absorbency and whatever focus error the phone contributes. It is no mystery why small printed codes are the ones that fail.

This is why moving the sign up one size helps so much. Going from a 35 mm sticker to a 45 mm table tent is not a 29% improvement in a vague sense. It is 0.42 mm of blur tolerance becoming 0.55 mm, in a range where a tenth of a millimetre is the difference between working and not.

Everything above assumed a short link. A longer one raises the module count, and since the printed size is fixed, every module gets smaller. Eventually they drop below the practical print floor of about 0.4 mm.

Working backwards from that floor gives a character budget for each sign:

SignCode sizeLink budgetGrid at the limit
Business card back20 mmabout 85 characters41 x 41
Sticker35 mmabout 365 characters77 x 77
Table tent45 mmabout 670 characters101 x 101
Counter card60 mmover 1,300 characters141 x 141
Wall poster100 mmThe format runs out before the print size does
Window sign150 mmThe format runs out before the print size does

The business card row is the one worth remembering. 85 characters is not much. It is a domain and a short path. Add tracking parameters, which routinely run to 60 or 80 characters on their own, and you are past it without noticing.

From the counter card upwards the printed size stops being the constraint. A QR code tops out at version 40, a 177 by 177 grid holding 2,331 bytes at error correction level M, and on a poster you hit that ceiling long before the modules get too small to print. We measured that ceiling separately when testing whether a photo fits in a vCard code.

The floor is not a cliff

We then rendered these codes and decoded them, which is where the honest caveat comes in.

Codes at exactly the limit decoded, as expected. But so did several past it. A 120 character link on a 20 mm business card, giving 0.38 mm modules, decoded fine. So did a 900 character link on a table tent at 0.37 mm. Only one case past the floor actually failed.

So what is the 0.4 mm floor for? Not the decoder. On a clean digital image the decoder copes well below it. It is a margin for the physical world: ink spreading into the paper, a camera that has not quite focused, a laminate catching the light, a phone held by someone walking past. The budgets above are where you still have room for those. Below them you are betting that nothing goes wrong.

This matches what we found measuring damage tolerance and scan limits: a software decoder reading a clean file is the best case, every time. Design for the worst one.

Common questions

What is the minimum size for a QR code?

About 2cm per side for anything printed, and that assumes close range scanning with short data. Below that, phone cameras cannot resolve the individual modules reliably.

Can a QR code be too big?

Not really, though very large codes need the scanner to stand further back to fit the whole code in frame. The failure mode at large sizes is being too close, not the size itself.

Does the colour of a QR code matter?

Yes. Dark modules on a light background is the only combination that reads reliably everywhere. We tested an inverted code, light on dark, and a standard detector failed to read it at all.

QRotto

QRotto builds free browser based QR code generators and writes the guides that go with them. Every generator is verified by decoding the codes it produces and confirming the output matches the input exactly. See our editorial standards.