← Blog  ·  Restaurants  ·  5 min read

QR code for a restaurant menu: what actually works

Most menu QR codes fail for boring reasons — printed too small, laminated until they glare, or pointing at a link that expired when a subscription lapsed. Here is how to avoid all three.

Advertisement

Point it at a page, not a PDF

A PDF opens as a document. On a phone that means pinching and dragging to read a starter. Point the code at a web page instead — your own site, a Google Doc published to the web, even a simple page your host provides. If a PDF is genuinely all you have, at least make it portrait and single-column.

Whatever you link to, load it on a phone first, over mobile data rather than your own WiFi. A menu that takes eight seconds on a slow connection is a menu nobody reads.

Static codes do not expire. Many "free" ones do.

There are two kinds of QR code. A static code contains the link itself — the pattern of squares literally spells out your address. A dynamic code contains a short link owned by whoever generated it, which then redirects to you.

Dynamic codes are useful if you need to change the destination after printing, and they let the provider count scans. The catch is that the redirect belongs to someone else. If that service shuts down, changes its pricing, or you stop paying, every printed code stops working — and you find out from a customer holding a menu that leads nowhere.

Our generator only makes static codes. That is a deliberate limitation: nothing to expire, no account, no monthly fee, and no third party between your customer and your menu.

Size it for the distance

The rule scanner manufacturers use is simple: the code should be roughly one tenth of the distance it is scanned from. A table tent read at 30 cm needs about 3 cm of code. A poster by the door read from two metres needs 20 cm.

Round up. Phone cameras vary enormously, older phones focus slowly, and restaurant lighting is usually dimmer than the room you designed in. A code that is slightly too big costs nothing; one that is slightly too small costs you a customer squinting at a table.

30 cm awayneeds 3 cm of codetable tent1 m awayneeds 10 cm of codewall menu2 m awayneeds 20 cm of codedoor poster
The working rule is one tenth of the reading distance. Round up — phone cameras vary, and a code slightly too large costs nothing.

Leave the white border alone

The blank margin around a QR code is not decoration. Scanners use it to find where the symbol begins, and the specification asks for at least four modules — four of the small squares — on every side.

This is the most common failure we see, because it is invisible. The code looks perfect. A designer crops it flush to a coloured background, or nests it inside a border, and it simply stops reading on half of phones. If you take one thing from this page, take this: do not crop the white edge.

✕ cropped flush — fails✓ margin kept — readsadd 4 modulesof white space
The quiet zone is not decoration. Scanners use the blank margin to find where the symbol begins — crop it flush and the code stops reading, with nothing visibly wrong.

Colour, contrast and lamination

Dark code on a light background, always. Never the reverse — scanners look for dark modules on a light field, and an inverted code is not read by most phones at all.

Coloured codes work if the contrast is real. Deep navy or forest green on white is fine. Pastel on cream is not, whatever it looks like on a bright monitor. If you are unsure, print it and look at it in the room it will live in.

On lamination: gloss reflects overhead lights straight back into the camera, and a customer ends up tilting the card around trying to find an angle. Matte laminate costs the same and does not do this.

Where the code goes on the table

Table tents work because they stand up and face the diner. A code flat on the table gets scanned at an angle, in the shadow of whoever is leaning over it. If you must go flat, put it on the placemat near the edge rather than in the centre.

Add a line of text saying what it is. "Our menu" beats an unlabelled square — people are wary of scanning codes without knowing where they lead, and rightly so.

✓ upright, faces the diner△ flat, scanned at an angle
A card lying flat is read at an angle, often in the shadow of whoever leans over it. Standing it up solves both.

Printing a set of them

If every table gets the same menu link, you need one code printed many times, and any print shop can do that from a single SVG file.

If the codes differ per table — table numbers for ordering, or different links per section — put them in a spreadsheet and generate them together. Our bulk generator takes a CSV and returns a ZIP, and its print-sheet mode lays them out on A4 at a size you choose in millimetres, with cut marks. That last part matters: it is the step where codes usually get scaled down by accident in a word processor.

Test it like a customer

Not on your phone, at your desk, under a good lamp. Print it, put it on an actual table, and try it with the oldest phone in the building, in evening light, from where a person would actually sit. Then hand it to someone who has never seen it and watch what they do.

Nine times out of ten, a menu code that fails in service was never tested anywhere but a laptop screen.

Static code — nothing expires, no account, no sign-up.

Make a menu QR code →
Advertisement