QR Code Size Guide: Minimum Size for Print, Fabric, and Outdoor Signage
Two numbers decide whether a QR code scans: how wide you print it, and how many modules it holds. Here is how to work out both, with the arithmetic shown.
The most common size advice for QR codes is a single number, and it hides the part that matters. A QR code is a grid of small squares called modules, and a camera has to tell those squares apart. How wide the whole code is printed matters, but so does how many modules are packed into it.
This guide gives you the two rules of thumb that most sources agree on, then shows how payload length changes the picture, with numbers from our own decoder tests.
What is the minimum size for a QR code?
For close-up scanning, at least 2 x 2 cm (0.8 x 0.8 in), not counting the blank margin. For anything scanned from further away, make the code about one tenth as wide as the distance it will be scanned from. Keep the link short, because a longer URL makes the modules smaller at the same width.
The Two Rules Most Guides Agree On
The first is a close-up floor: QR Code Generator's size guide and others recommend at least 2 x 2 cm (0.8 x 0.8 in) for things scanned in the hand. Smaller codes can work with a short link and a good camera, but 2 cm is where you stop having to hope.
The second is the 10:1 rule: the scanning distance is about ten times the width of the code. A code 3 cm wide is comfortable at about 30 cm, which is roughly arm's length. It is a rule of thumb, not a law of physics, and phones differ, so treat it as the least you should do.
There is also a margin to respect. Every code needs a blank border, the quiet zone, of at least four modules on all sides. The standard behind QR codes, ISO/IEC 18004, requires it, and the border is in addition to the sizes in this guide. For more, see DENSO WAVE's notes on generating a code, which state that a margin is required.
How Wide for Each Place You Print It
Applying the 10:1 rule to some typical distances gives this table. The distances are examples, so replace them with how far your real audience will stand.
| Where it is scanned | Example distance | Width (10:1) |
|---|---|---|
| Business card, flyer or menu in hand | 25 to 30 cm (10 to 12 in) | 2.5 to 3 cm (never below 2 cm) |
| Table tent or counter sign | about 50 cm (20 in) | about 5 cm (2 in) |
| Shop-window poster | 1.2 to 1.8 m (4 to 6 ft) | 12 to 18 cm (5 to 7 in) |
| Wall poster or event banner | about 3 m (10 ft) | about 30 cm (12 in) |
| Storefront or bus-stop sign | about 5 m (16 ft) | about 50 cm (20 in) |
| Billboard | about 10 m (33 ft) | about 1 m (3 ft) |
Most people scan from a bit further than they expect to. If the code sits at the edge of the range, go one row up.
Why a Long URL Needs a Bigger Code
Width alone does not tell you how big each module is. The number of modules depends on what the code holds. In our tests, at error correction level M, a 35-character link made a code 29 modules wide, an 81-character URL made one 37 wide, and a 186-character URL with tracking parameters made one 57 wide.
Divide the printed width by the module count and you get the width of one module. The table uses the width of the code itself, without its margin.
| What the code holds | Modules per side | One module at 2 cm | One module at 3 cm |
|---|---|---|---|
| 35-character short link | 29 | 0.69 mm | 1.03 mm |
| 81-character URL | 37 | 0.54 mm | 0.81 mm |
| 186-character tracked URL | 57 | 0.35 mm | 0.53 mm |
A 2 cm code holding the long URL has modules about a third of a millimeter wide, roughly half the width of the modules in a same-size code holding a short link (0.69 mm). That is why the long one is less forgiving: the camera has half as many pixels to spend on each module.
The practical fix is to encode less. A dynamic code holds a short redirect link instead of your long destination, which keeps the code sparse at any print size. Our decoder test results show how much this matters, including the two-pixels-per-module floor below.
On a Screen: Pixels, Not Centimeters
For a code shown on a web page, an email or a slide, the size that matters is how many screen pixels each module gets. In our decoder tests, a code was read reliably down to two pixels per module and failed below that, in particular for the denser codes.
Screens add scaling, compression and glare, so aim for double the floor: at least four pixels per module, including the margin. For the three payloads above that is about 150 pixels for a 29-module code, 180 for a 37-module code and 260 for a 57-module code. The PNG that this site's generator downloads is 1100 by 1100 pixels, which gives a short-link code more than 30 pixels per module, far more than it needs.
If you need to print from a PNG, use the SVG instead. A vector file has no pixels to run out of, and it scales to a business card or a billboard.
Fabric, Glossy Paper, Curved Surfaces and Outdoor Signs
Surface changes what the camera sees. Woven fabric breaks up the edges of modules, glossy paper and laminate throw glare, a curved bottle bends the grid, and sunlight washes out contrast. We did not test any of these, so we are not going to hand you a centimeter figure for each.
What follows from the rest of this guide is a sensible order of operations. Start from the 10:1 width for the real distance, shorten the link to keep the module count down, then go one size up for fabric, shine or weather, and print a proof on the real material before you commit to a full run.
A Two-Minute Size Check
- Measure the code without its margin. It should be at least 2 cm wide and at least a tenth of the scanning distance.
- Count the modules, or compare it to the table above. More modules means you need more width.
- Check the blank margin: four modules on every side, with nothing printed in it.
- Scan a printed proof with two or three different phones, from the real distance, in the real light. Everything above helps you choose; only a real scan confirms.
Frequently Asked Questions
Make a QR code with a short link
Free, no account. Download the SVG for print or the 1100-pixel PNG for screens.
Create a Free QR Code