What a QR code actually is, and why printing changes everything
A QR code is a two-dimensional barcode that any phone camera can read. The name comes from quick response. It can hold a url, a short piece of text, wi-fi credentials or a contact card. On restaurant material, it almost always points to a web page.
On screen, that black and white square is perfect: every module maps to a crisp pixel. On paper, things get harder. Ink spreads, the stock absorbs it, and the printer's screen crushes the fine detail. Printing flaws can turn a valid code into a square that says nothing.
A phone needs three things to decode the image: modules that are big enough, sharp contrast, and empty space around the code. All three are decided before the print run, never after.
How a QR code is built
Three large squares sit in the corners: these are the position markers. They tell the reader which way up the code is. Between them, a grid of black and white modules carries the encoded information, plus a layer of error correction.
That correction is why a slightly dirty code still scans. At level H, up to 30% of the surface can be damaged without losing readability. That's the level to pick as soon as the code goes onto something handled all day long.
How big should a printed QR code be
The one-tenth of the distance rule
The most reliable rule of thumb fits in a single sentence: the width of the code should be about one tenth of the reading distance. At 30 cm, allow 3 cm across. At two metres, you need 20 cm. That ratio comes from the guidance of Denso Wave, the Japanese company that created the format in 1994.
Below 2 cm, trouble comes quickly. Many phones can no longer focus that close, and the modules blur into each other. Treat 2 cm as the absolute floor and 3 cm as the comfortable size for anything held in the hand.
Sizes by type of material
The same code doesn't need the same size on a table tent and on a shop window. Here are the benchmarks we use with restaurants, to be adjusted for the light in your room.
| Material | Reading distance | Recommended size | Margin around |
|---|---|---|---|
| Table tent, coaster | 20 to 30 cm | 2.5 to 3 cm | 3 mm |
| Business card, receipt | 15 to 25 cm | 2 to 2.5 cm | 2 mm |
| Placemat, A5 flyer | 30 to 50 cm | 3 to 5 cm | 4 mm |
| A3 poster in the dining room | 1 to 1.5 m | 10 to 15 cm | 1 cm |
| Window, roller banner, shopfront | 2 to 3 m | 20 to 30 cm | 2 cm |
On a business card, space is always tight. Shorten the encoded address rather than shrinking the square: a short url generates fewer modules, so each module is larger for the same overall size.
Resolution and file format: what to download
The resolution decides how sharp the final print is. For anything printed, aim for 300 dpi at the code's actual size. A file 600 pixels across gives a clean 5 cm square; stretch that same file to 15 cm and it turns soft and stops scanning reliably.
The better move is to avoid the problem entirely with a vector format. An SVG, an EPS or a vector PDF scales without ever pixelating. Your printer will prefer that kind of file anyway, whatever enlargement you ask for.
- SVG, EPS, PDF: the first choice for posters, banners and any large format.
- PNG at 300 dpi minimum: fine for small items, and a transparent background is useful.
- JPG: avoid it, the compression leaves a grey halo around the modules.
A decent generator lets you download these different file types in one click. If yours only offers a 200-pixel JPG, change tools before you pay for a print run.
Margins, contrast and colour: the mistakes that cost you a print run
The quiet zone
The code needs a white margin around it, known as the quiet zone. The standard calls for a width equal to 4 modules. In practice, keep at least 3 mm on small items and 1 cm on a poster.
This is the most common mistake in artwork. Text pushed up against the edge, a decorative rule, a fold in a leaflet running through the square: in those cases phones can no longer isolate the pattern and give up on the scan.
Contrast and colour
The code must be darker than its background, never the other way round. A reader looks for dark modules on a light field. A white QR code on black works on some recent phones, but not on all of them.
Want to customise the code in your house colours? That's possible, with two guardrails: a contrast ratio of at least 4 to 1 between the pattern and the background, and a plain background. Gradients and background photos push the scan rate down.
On the menu artwork we receive, two problems come up again and again: a margin that's too tight, and a code sitting on a photo of a dish. Everything else takes ten minutes to fix.
Where the code sits
Think about the physical position too. A code printed on the back of a placemat, on a tablecloth that shifts, or in a badly lit corner makes the whole thing fiddly. Put it at hand height, on a stable surface, with a short line of invitation above it.
Which printer and which materials to choose
Not all printers handle this job equally well. Laser gives clean edges and works very well for menus and posters. Inkjet works too, as long as you use non-porous paper: on uncoated stock the ink spreads and the modules run together.
For labels, thermal printers such as Zetec or Brother do the job, but their resolution is often around 203 dpi. Move up to a 300 dpi model if your codes drop below 3 cm.
- Matt paper, 250 to 350 gsm: the best compromise for a dining room menu.
- Matt lamination: protects without the glare you get from gloss.
- Acrylic or PVC: hard-wearing for a table tent, as long as you avoid mirror finishes.
- Engraved wood, metal: very durable, but have a prototype tested, since the contrast is weaker.
Stickers and labels have their limits. They peel, scratch and age badly on a table wiped down twenty times a day. They're handy for a two-week trial or a short campaign, not for a permanent QR menu in the dining room. On that point, our dedicated page on the QR code menu for restaurants goes into the materials we see last.
Test before you send it to print
A test costs five minutes; a reprint costs several hundred euros. Print a proof sheet at final size, on the final paper, and pass it around several pairs of hands.
Real users don't have your phone. Have the code checked on at least one iPhone, one recent Android and one handset more than three years old. Your customers can scan from the native camera, but also from a third-party app or the camera built into a messaging app.
- Scan in dim light, not just under a workshop strip light.
- Test at the real distance of use, sitting at the table.
- Check that the page it opens is mobile-friendly and loads in under three seconds.
- Read the url shown on screen: a typo doesn't show up in the modules.
Print tests can also reveal a problem with the destination rather than the code. If the menu opens badly on a small screen, it's the site that needs fixing. Our menu layout tools handle that side for you, with no technical work involved.
Changing a QR code after it's printed
A static code has the address hard-coded into it. Once printed, it's fixed: changing the destination means reprinting everything. That's the classic trap when the menu changes with the seasons.
A dynamic code points to an intermediate address that you can change at any time. The printed square stays the same, only the target page moves. You also get the number of scans, which gives you a solid basis for steering your marketing and spotting dishes that get viewed but never ordered.
Those figures are useful well beyond the printed item. They feed the work on margins described in our guide to menu engineering applied to your menu. Dynamic codes can also be reassigned from one campaign to the next.
What to check before you send your file
Printing a readable QR code comes down to four decisions: size relative to distance, a vector or high-resolution file, a respected margin and sharp contrast. Add a physical test and you rule out almost every scan failure.
To get a clean print first time, give your printer a high-quality vector file, state the exact size of the square in millimetres and ask for a paper proof. That last step is enough to confirm the result matches what you approved on screen.
One last habit that saves you nasty surprises: keep the source file and the encoded address together in a clearly named folder. The day you order another print run, you start from the right version, in the same format, without regenerating anything.














