Restaurant menu QR codes that actually work
Where to host the menu, why PDFs frustrate customers, the table tent size that works, and the mistake that forces a reprint of every table.
QR menus got a bad reputation for a reason: most of them are badly done. The code works, and the experience after the scan is worse than a piece of card.
Here is how to get the useful version.
Decide where the menu lives first
This decision drives everything else, and it is the one most places get wrong.
Best: a page on your own website. Loads fast, works on any phone, you can update prices in seconds, and it costs nothing extra. It also means the QR code points at your domain — a trust signal, and something Google can index.
Acceptable: a PDF on your own domain. Keep it under 2 MB, portrait orientation, large type. A 12 MB landscape PDF designed for A3 printing is a genuinely bad mobile experience.
Risky: Google Drive or Dropbox. Works, but the sharing link can be broken by a permissions change, and the viewer adds a layer of interface between the customer and the food.
Avoid: a link that expires. Any file host with temporary URLs will silently kill every table tent you printed.
Whatever you choose, the URL must stay constant. That is what lets a static code — free, permanent, no subscription — behave like a dynamic one.
The trick that saves you from ever reprinting
Point the code at a fixed address you control, then change what sits behind it.
Print yourrestaurant.com/menu. Today that redirects to a PDF. In winter it points at a different page. Next year, a new site entirely. The printed code never changes.
If your menu is a file, keep the filename identical when you replace it — always menu.pdf, never menu-january-2027-v2.pdf. Overwrite, do not add.
This is why you do not need to pay a QR company for a "dynamic" menu code. The useful half of dynamic is just a redirect, and the redirect is yours.
Size, and the mistake everyone makes
A table code is read from roughly 30 to 50 cm:
- Minimum: 3 cm across
- Comfortable: 4 cm
- Quiet zone: 4 modules of empty white on every side
The mistake is the quiet zone. Designers routinely run a background colour or a decorative border right up to the edge of the code, and scanners then struggle to find where the code begins. Leave the margin genuinely empty.
Second mistake: printing on glossy laminate. Restaurant lighting reflects straight into the camera. Matte finishes scan far more reliably, and cost the same.
Our menu generator exports a print-ready A6 PDF already sized for a table tent, so this is handled.
Tell people what they are scanning
A bare square on a table is ambiguous. Add three things:
- A short instruction: "Scan for our menu"
- The URL in text:
yourrestaurant.com/menu— a fallback when the scan fails, and a trust signal after all the quishing coverage - Your logo or name, so it is obviously yours and not a sticker someone added
That third point is not paranoia. Stickers placed over legitimate codes are the most common QR scam, and restaurants are a favourite target.
Keep a paper menu
Not a compromise — a business decision.
Some customers have old phones, dead batteries, poor eyesight, or simply do not want to. Losing a table over an insistence on QR-only is worse than the cost of printing.
The QR menu should be the fast path, not the only path.
Test it the way a customer will
The test that matters is not you scanning it at your desk:
- Print one table tent at final size, on the real card
- Put it on an actual table, under the actual lights
- Scan with an older Android phone, not your newest iPhone
- Turn off WiFi and use mobile data — that is what customers have
- Time it. If the menu takes more than 3 seconds to be readable, fix the page before printing 40 of them
Step 4 catches the heavy-PDF problem that a desk test never reveals.
What to check every month
Codes on tables live a hard life. Once a month:
- Look for stickers placed over your codes
- Check for wear, spills and creasing
- Scan one yourself to confirm the destination still resolves
- Confirm prices on the live menu match what you are charging
That last one is the most common failure in practice — not the code, the content behind it going stale.
If you are also taking payment
A menu code and a payment code should be separate, clearly labelled codes. Mixing them invites confusion, and confusion around payment is where fraud lives.
For payments, use a static code generated from your own bank details — PIX in Brazil, UPI in India — so no third party sits between the customer and your account.
In short
- Host the menu as a web page on your own domain when possible
- Point the code at a fixed URL and change what is behind it
- 3 cm minimum, 4-module quiet zone, matte not glossy
- Print the URL in text beside the code
- Keep paper menus available
- Test on an old phone, on mobile data, in the actual room
- Check the codes monthly for stickers and stale prices
Create a menu QR code — free, static, with a print-ready table tent PDF and no subscription.