QR Code Free Forever QR Code Free Forever Create QR codes. 100% free. Forever. Make a QR code

Home · Guides

QR Codes for Restaurant Menus

The mistake is encoding the menu. Encode the address of a page you control, and the menu becomes something you can change on a Tuesday morning without touching a single table card.

Point at a page, not a file

Two versions of the same idea, and they behave completely differently.

A PDF. The phone downloads it and opens a document viewer. The text is the size the designer set, so the guest pinches and drags around an A4 page on a five-inch screen. It works, in the sense that the file arrives. Nobody enjoys it, and older phones handle it badly.

A web page. Text reflows to the screen, loads in a second, works on any phone, and — the part that matters commercially — you can change it. New prices, a sold-out dish, a seasonal section: edit the page, and every printed code in the room is already pointing at the new version.

So: encode a short URL on your own domain, such as restaurantname.com/menu. Better still, encode restaurantname.com/m and make that a redirect, so you can move the real menu page later without the codes caring. The reasoning is in static versus dynamic QR codes.

Do not use a dynamic QR service for this. It puts a subscription between your guests and your menu, and "your QR code has expired" is a message you do not want a table of six to see on a Saturday night.

What the menu page has to do

The code is the easy half. A guest who scans and then waits eight seconds for a page to load has had a worse experience than one handed a card.

Keep a handful of printed menus behind the bar regardless. Some guests will not scan, some phones will not cooperate, and a restaurant that cannot serve someone without a smartphone has a problem that is not technical.

The table card

A table card is read from roughly 30 cm, so the 10:1 rule gives a 30 mm code, and 35–40 mm is more comfortable in a dim room.

DecisionRecommendationWhy
Code size35–40 mmRead at 30 cm, in low light, at an angle
Error correctionMIndoors and clean; H would shrink the modules
FinishMattGloss reflects the ceiling lights straight into the camera
Text above“Scan for our menu”A bare square gets scanned much less
Text belowThe URL, smallRescues anyone whose camera will not play
Stand angleTilted, not flatA flat card on a table is read at a steep angle

The finish deserves emphasis. Restaurant lighting is overhead, table cards are near-horizontal, and glossy lamination puts a bright reflection over part of the symbol at exactly the angle a seated guest holds a phone. Matt lamination costs the same and solves it.

If you print table numbers on the same card, consider giving each table its own code — restaurantname.com/m?t=12 — so that if you later add ordering, the table is already known. It costs nothing now and saves a reprint later.

Changing the menu without reprinting

This is the whole benefit, and it depends on one decision made at the start: the code points at an address you control, not at a file and not at a third party.

# Netlify _redirects
/m   https://restaurantname.com/menu/autumn   302

# Apache .htaccess
Redirect 302 /m https://restaurantname.com/menu/autumn

Use 302, not 301, so browsers do not permanently cache the old destination. Change the target whenever the menu changes; the cards on the tables never change.

What goes wrong in a dining room

Before printing a hundred cards, run through the pre-print checklist — most of these are on it.

Written by Manuel Llovet, who builds and maintains QR Code Free Forever. Published 2026-08-31, last checked 2026-09-08. Figures and measurements on this page were produced for this site; the method is described in each caption.

Make this code now

Free, no sign-up, and it never expires. Everything runs in your browser.

Open the generator

Keep reading