1. Start with less data
A QR code is a grid of square modules. The more characters you encode, the more modules the grid needs: version 1 is 21 × 21 modules, each following version adds four modules per side, and version 40 reaches 177 × 177. When the printed size is fixed, say a 3 cm square on a label, more modules simply means smaller modules, and small modules are what phone cameras struggle with.
The difference is easy to see in our QR code generator, which shows the version under the preview. The address https://example.com/menu (24 characters) becomes a version 3 code with 29 × 29 modules at error correction level M. A 150-character link full of tracking parameters needs version 9 at the same level: 53 × 53 modules. Printed at the same width, each module of the long link is only a little more than half as wide.
Practical ways to shrink the content:
- Link to a short, clean path on your own domain, such as
example.com/menu, instead of a deep URL with parameters. - Remove tracking parameters you do not need, or keep a single one, such as
?utm_source=poster, to tell posters from flyers.
Link shorteners also shrink codes, but they add a third party and show an unfamiliar domain in the phone's preview. A short path on your own domain is usually the better short link.
2. Choose the right size
There is no single official minimum size, because it depends on how dense the code is and how far away people will be. A widely used rule of thumb is a distance-to-size ratio of about 10:1: the code should be at least a tenth as wide as the scanning distance. Treat the figures below as starting points for a short link, not as guarantees, and go bigger for denser codes.
| Where it is scanned | Typical distance | Starting width |
|---|---|---|
| Business card, label, packaging | 15–25 cm | 2–2.5 cm (0.8–1 in) |
| Menu, flyer, table card | 30–40 cm | 3–4 cm (1.2–1.6 in) |
| Poster on a wall | 1–2 m | 10–20 cm (4–8 in) |
| Shop window, banner | 3–5 m | 30–50 cm (12–20 in) |
In module terms, a version 3 code plus its quiet zone is 37 modules across, so at 3 cm each module is about 0.8 mm. The 150-character link (61 modules with the margin) leaves just under 0.5 mm per module, where cheaper phone cameras start to hesitate.
Resolution matters too. At 300 dots per inch, a common print resolution, a 1024-pixel PNG covers about 8.7 cm (3.4 in). Anything larger should use an SVG file, a vector format that stays sharp at any size. Avoid enlarging a small PNG in a layout program: module edges blur, and blurred edges are harder to read.
3. Keep strong contrast
Scanners turn the image into black and white by comparing brightness, so the dark modules must be clearly darker than the light ones. Most scanners also expect the familiar arrangement of dark modules on a light background.
- Black or a very dark brand color on white or a pale background is the safest combination.
- Avoid light foregrounds such as yellow, pastels or light gray. Colors that look different to the eye can have almost the same brightness, red on green being a classic example.
- Inverted codes, with light modules on a dark background, are read by many recent phone cameras but not by every scanner app. If your design needs one, test it on several devices.
- Do not place the code over a photo, a pattern or a gradient. Put it on a solid panel.
- Be careful with gloss, foil and metallic inks: reflections under shop lights can wipe out part of the code. Matte finishes are more forgiving.
QR Hut's generator shows a warning when the brightness difference between your two colors is small or when the foreground is lighter than the background.
4. Respect the quiet zone
The QR Code standard, ISO/IEC 18004, requires a blank margin at least four modules wide on every side of the symbol. Scanners use this quiet zone to find where the code starts and ends. Trimming it, or pushing the code against a border or photo, is one of the most common reasons a printed code fails.
Files downloaded from QR Hut already include the four-module margin in the background color. Keep it when you place the file, and if the surrounding area is dark or busy, make sure the margin stays light.
5. Pick an error correction level
QR codes contain Reed–Solomon error correction, which lets a scanner rebuild parts that are missing or damaged. Level L can restore about 7% of the data, M about 15%, Q about 25% and H about 30%.
Higher is not automatically better. The redundancy takes space, so a higher level needs more modules for the same content: our 24-character menu link is version 3 at level M but version 4 at level H.
- M is a good default for clean prints indoors.
- Q or H suit codes that may be scratched, folded, wet or dirty, such as outdoor signs, shipping labels and floor stickers, and any code with a logo.
- L is only worth it when you need the smallest possible code and the conditions are ideal.
A center logo deliberately covers part of the code and relies on error correction to fill the gap. Keep it small (QR Hut limits it to 22% of the code's width, about 5% of its area), use level H, and never cover the three large squares in the corners, which scanners need to locate the code.
6. Materials, surfaces and placement
- Flat is best. On bottles, cups and cables the curve distorts the grid. Keep the code small relative to the curve, or print it on a flat tag.
- Avoid folds. Keep codes away from creases, perforations and the center fold of brochures.
- Think about the person scanning. Put codes at a comfortable height, where people can stand still, and not above escalators or on moving vehicles.
- Signal. A code that opens a website needs mobile data. In basements, trains or rural areas, print the web address as well, or use a Wi-Fi or contact code, which work offline.
- Tell people what to expect. A line such as "Scan to see the menu" and the short web address printed under the code help everyone, including people whose camera does not scan.
7. Test before you print a batch
Before ordering hundreds of copies:
- Print one proof at the final size, on the final material if you can.
- Scan it with at least two different phones, ideally an iPhone and an Android phone, using their built-in camera apps. Include an older or budget phone if one is available.
- Scan from the distance and angle your audience will use, in similar light.
- Check the destination: does the page load quickly on mobile data and look right on a small screen?
- Test again after lamination or varnish, which can add glare.
You can also photograph the proof and upload the picture to our QR code scanner, which shows exactly what the code contains. A desktop decoder is not identical to a phone camera, so keep phones as the final test.
Checklist
- The content is as short as possible, ideally a clean link on your own domain.
- The printed width is at least a tenth of the scanning distance.
- Dark modules on a light, solid background, with no photo behind the code.
- The four-module quiet zone is intact on all sides.
- Error correction M by default; Q or H for rough conditions or a logo.
- A short call to action and the web address are printed near the code.
- A proof was scanned successfully on two or more phones at the real distance.