How to use QR codes for menus and flyers

Written by Adrian Simpson. 20+ years in web and IT, including plenty of print jobs that needed a QR code that actually scanned. Published 2 Aug 2026, updated 14 Aug 2026.

Menus and posters get scanned from further away than a business card, and that one difference drives every decision here. Size is the thing people get wrong, and a code that's too small is invisible rather than merely awkward.

Size by scanning distance

Same rule as before: a code scans from roughly ten times its width. Work backwards from where the reader will be standing.

Table menu, read at 12 in → 1.2 in code
Flyer in the hand, 12 in → 1.2 in code
Counter sign, 2 ft → 2.5 in code
Window poster, 5 ft → 6 in code
Wall poster, 10 ft → 12 in code

Round up rather than down. A code slightly too big costs you a bit of layout. A code slightly too small costs you every scan.

Where to put it

Somewhere a phone can physically reach. That sounds obvious until you've watched someone try to scan a code in a window from outside, at an angle, with the glass reflecting.

On a table menu, put it near the top rather than the bottom, so people don't have to pick the whole thing up. On a poster, roughly chest to eye height. Avoid the very bottom of a floor-standing sign, because nobody wants to crouch in public.

Tell people what they get

A bare code is a question mark. A few words next to it lifts scans more than any design choice you'll make.

Name the reward, not the mechanism. People know how to scan a code. What they don't know is whether it's worth doing.

Menus specifically

The page behind it has to work on a phone, in a dim room, on bad wifi. A PDF of a printed menu is the usual mistake, because it opens as a document people have to pinch and drag around. A plain mobile page beats it every time.

Keep a few printed menus for anyone without a phone or without the patience. It costs nothing and avoids an awkward moment at the table.

Surfaces and lamination

Gloss lamination and glare are a bad combination on a table under downlights. Matt finish scans more reliably.

On a curved surface, a cup or a bottle, keep the code small enough that it sits on a fairly flat area. Bending distorts the pattern and readers give up.

One code, one job

Flyers often end up with three codes on them. One for the menu, one for the booking page, one for the social account. Every one of them reduces the odds of any being scanned.

Part of it is choice, and part is practical: from a normal reading distance a phone camera may see two codes at once and pick whichever it locks onto first, which isn't necessarily the one the person aimed at. Codes sitting close together on a page do this constantly.

Pick the single action you want and give it one code. Everything else can live on the page behind it, where it costs nothing to list and nobody has to choose while holding a flyer.

Knowing whether it worked

You don't need a paid code-tracking service to find out whether people scan. A static code pointing at a URL you control tells you plenty, as long as you give each placement its own address.

Put the window poster on yourdomain.com/menu, the table cards on /table, and the flyers on /flyer, each redirecting to the same page. Your normal site analytics then show which placement produced traffic. Tracking parameters on the end of one URL do the same job if you'd rather not create separate paths, though they make the code denser, so keep them short.

Either way, look at what happened after the scan rather than just the count. A hundred scans and no bookings is a landing page problem, not a poster problem, and the two get confused constantly.

Windows, weather, and awkward surfaces

A code in a window has to be scanned through glass, usually at an angle, often with the street reflected across it. Most of the fixes are physical rather than digital.

Mount it low enough that people aren't shooting upward into the sky's reflection, size it for the distance from the pavement rather than from inside the shop, and check it at the time of day the glare is worst. A code that scans at nine in the morning can be unusable at four in the afternoon.

Outdoors, ink fades. Sunlight lifts contrast out of a printed code over a season, and a black code that's drifted to grey stops reading long before it looks wrong to you. Anything living outside for months wants UV-stable printing or laminate, and a look at it every few weeks.

Rain and dirt matter more than people expect too, because a scanner needs the pattern intact. A code at ankle height on an A-board picks up road spray within a week.

Print quality

Download the PNG larger than the printed size and scale down. 300 DPI at final size is the target. Ink bleed on cheap paper thickens the dark modules and eats the gaps, so if you're printing flyers in bulk on uncoated stock, size up a little.

And keep the quiet zone, the clear border of four modules on each side. Designers lose it when they crop a code into a tight layout, and it's the most common reason a printed code fails.

Test it in the room

Print one at final size, put it where it's going to live, and scan it standing where a customer would stand. In the actual light. With an older phone as well as a new one.

Do this before the print run, not after. A thousand flyers with a code that doesn't scan is an expensive way to learn the ten times rule.

Make one

The QR code generator lets you pick a size and colour and download a PNG, all in your browser. For cards and anything held close, see QR codes on business cards.

General guidance, not professional advice of any kind. Test your own codes before printing at volume, what works here is a starting point, not a guarantee.