QR code menus for restaurants and cafés

Menu codes have their own problems: restaurants are often dimly lit, laminated cards cause glare, and diners give up quickly if the code does not scan straight away.

6 min read · Updated

The other guides here are about making a code that scans. This one is about a code that scans at a corner table, at 8pm, on a phone at 12% battery, which is a harder test. Many menu codes pass at the designer's desk and struggle in the dining room.

Link the menu QR code to a web page

A PDF menu on a phone means pinching and dragging: the text is too small, it does not reflow, and some devices show a download prompt first. A plain HTML page costs nothing extra and opens straight away. If you only have a PDF, make it a single portrait page sized for a phone screen.

Keep the URL short. Every character makes the code denser, and density is the enemy in low light. yourplace.com/menu works better than a link with tracking parameters added to the end.

Size and placement on the table

A table tent is scanned from roughly 40–60 cm, so by the distance ÷ 10 rule the code needs to be at least 4 cm wide; 5 cm gives you a comfortable margin. Put it where a phone can reach it without moving glasses, and keep it upright. A code lying flat on the table is scanned at a steep angle, which reduces contrast and makes focusing harder.

Print the code in more than one place. If the only table tent gets knocked over or cleared away with the plates, guests have nothing to scan. A small extra code on the napkin holder, the wall or the placemat costs very little.

Low light and glossy lamination

This is what catches most restaurants out. A code that scans at your desk can fail at table six for two reasons at once: the room is dim, so the camera struggles to get a sharp image, and a glossy laminate throws a bright reflection straight across the modules.

  • Use matte lamination. It costs the same as gloss and makes the biggest difference of anything on this list.
  • Print plain black on white. Use your brand colours for the frame around the code and leave the modules black.
  • Choose error correction Q instead of M. Menus get greasy, creased and scratched within a week.
  • Test at a table in the evening, with an older phone. A test at the pass in daylight on the newest phone in the building tells you little.

Add a “Scan for the menu” caption

Guests tend to overlook a bare code on a table tent. With “Scan for the menu” printed underneath, more of them use it. Add the line in every language your guests speak, and use a caption frame so the instruction is part of the design.

If you also run a guest network, a second small card with a Wi-Fi code saves your staff from answering the Wi-Fi question all evening.

Keep paper menus as well

Not everyone can use a QR menu: some older guests, someone with a flat battery, a phone with no data, a visitor roaming abroad. Some jurisdictions also require a readable price list on request. Keep a few printed menus behind the bar for these guests.

Use a stable URL for the menu QR code

Print a code that points at a stable URL, and update the page whenever the menu changes. Do not encode the dish list itself, and do not link to a file name with a date in it: the printed code stays the same for years, while the menu changes every season. For the same reason, a static code pointing at a page you control is a safer choice than a vendor's dynamic code. The redirect is yours, so nothing expires when a subscription lapses.

Before the print run

Print one proof, laminate it the same way as the final batch, and scan it at a table in evening light with an old phone. If it is slow to scan even once, make the code bigger or simpler before you order two hundred. The troubleshooting checklist covers what to change first.