QR Signs: How Long Your Link Can Be at Each Print Size

The same code on a business card and on a window sign are not the same object. One of them forgives a quarter of a millimetre of blur. The other forgives nearly two.

By QRotto · Published · 8 min read

Advice about QR code size stops at the sign. Print it this big for that distance, and there the guide ends. It leaves out the thing that decides whether the sign works: what the printed size does to each individual black square, and how much of that you spend on the length of your link.

So we worked it out for the six printed objects people actually make.

The short version: a 20 mm code on a business card gives you 0.61 mm modules and tolerates about 0.24 mm of blur. A 150 mm window sign gives 4.55 mm modules and tolerates 1.82 mm. That is seven times the forgiveness for the same code.

The number that actually matters

A QR code is a grid of squares called modules. Printed size divided by module count gives you the width of one square, and that single number governs everything else.

It governs blur most of all. Our scan limits test found that a code stopped decoding once the image was blurred by roughly four tenths of one module. That is a proportion, so it converts straight into millimetres once you know the module width. It is the closest thing we have to a physical tolerance for a printed code.

The same QR code drawn at six printed sizes to scale, from a 20 mm business card code up to a 150 mm window sign, with the module width labelled under each.
The same code, the same data, drawn to scale at each printed size. Nothing about the pattern changes. The only difference is how much room each black square gets, which is the whole game.

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.

Advertisement

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.

What to do with this

  1. Shorten the link before you shrink the code. It is the only move that helps both numbers at once. A short path on a domain you control also lets you change the destination later without reprinting.
  2. Strip tracking parameters from printed codes. They are the commonest way an 85 character budget gets blown, and a printed code cannot be attributed the way a clicked link can anyway.
  3. If the link has to be long, go up a size. A table tent instead of a sticker buys you roughly twice the characters and a third more blur tolerance.
  4. Measure the printed code with a ruler once. If it is smaller than intended, your printer is scaling to fit, and every number here moves with it.

Our sign maker applies these sizes automatically and decodes the finished sign before you download it, so a link that is too long for the size you picked is caught rather than printed. Our print sizing guide covers choosing the size from scanning distance in the first place.

How we worked it out

Two limits worth stating. The 0.4 mm floor is a widely used working figure for laser printing rather than something we measured on a press, and your stock will move it. And the decode test is software on a clean render, which is exactly why the section above says the floor is a margin rather than a threshold.

The summary

Choosing a sign size is really choosing how much physical error you can absorb. The printed millimetres per module is the number, and your link length spends it.

On a business card you have 0.24 mm of blur and about 85 characters. On a window sign you have 1.82 mm and more than the format can hold. If your link is long, the answer is a shorter link or a bigger sign, not a smaller code.

Our QR code sign maker builds table tents, posters, stickers and window signs at these sizes and checks the result decodes first. If you already have artwork, the stress test will tell you how much blur it survives.

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.