How to print a QR code that scans every time
Most codes that fail were printed too small, too faint or too crowded. Six checks to run before you send anything to the printer.
Utilica3 min read

A QR code that will not scan is a reprint. Nearly every failure comes down to one of six things, and all of them can be checked before the file leaves your computer.
1. Make it big enough for the distance
The rule of thumb: a code should be at least one tenth as wide as the distance it is scanned from.
| Where it is | Scanned from | Minimum width |
|---|---|---|
| Business card, product label | 20 cm (8 in) | 2 cm (0.8 in) |
| Table tent, counter sign | 50 cm (20 in) | 5 cm (2 in) |
| Poster in a hallway | 2 m (6.5 ft) | 20 cm (8 in) |
| Window sign seen from the street | 5 m (16 ft) | 50 cm (20 in) |
Do not go below about 2 cm (0.8 in) on anything printed, however close people will be. Small codes with dense patterns are the first to fail.
2. Keep the pattern simple
The more a code holds, the smaller and more numerous its dots. A long web address with tracking tags on the end can turn a clean code into a dense one.
A dynamic code helps here: it holds only a short address, so the pattern stays simple however long the real destination is.
3. Dark dots on a light background
Phone cameras look for dark marks on a light surface.
- Keep strong contrast. Dark navy on white is fine. Pale yellow on white is not.
- Avoid light dots on a dark background. Many cameras will read an inverted code, but not all of them.
- Be careful with gradients. If the lightest part of the gradient is too close to the background color, that corner of the code disappears.
4. Leave the quiet margin alone
The empty border around a code is part of the code. Scanners use it to find the edges. The standard asks for a margin four dots wide on every side.
Text, a border line or the edge of the paper pressed up against the pattern is one of the most common reasons a good-looking code fails.
5. Do not let the logo cover too much
QR codes carry spare data so they can still be read when part of the pattern is damaged or covered. There are four levels, which recover roughly 7%, 15%, 25% and 30% of the code.
A logo in the middle works by using up that spare capacity. Keep it small, and use the highest level when you add one. Utilica raises it automatically when you upload a logo, and clears a padded space for it so the dots around it stay readable.
6. Send the printer the right file
- SVG for anything going to a print shop or a designer. It is a vector file, so it stays sharp at any size, from a sticker to a banner.
- PNG for documents, slides and anything you print yourself. Export it larger than you need. Scaling a small PNG up makes the edges blurry.
Never screenshot a code and print the screenshot.
Test it the way it will be used
Print one copy at the real size, on the real material, and scan it:
- from the real distance,
- with more than one phone, including an older one,
- in the light it will actually sit in. Glossy laminate under a spotlight is harder to scan than matt paper.
Utilica also reads every code back in your browser as you design it, and tells you what to fix: darken the dots, shrink the logo, widen the margin. It catches design problems before the test print does.
The short version
Big enough for the distance, dark on light, a clear margin, a small logo, a vector file, and one real test print. Do those six and the code will scan.



