Three codes, four places to put them, and the print details that decide whether a guest scans on the first try or gives up.
Most restaurants need exactly three QR codes: the menu, the guest WiFi, and the Google review. Each one answers a different question at a different moment of the meal, and each belongs in a different place in the room. Everything beyond those three tends to go unscanned.
The menu code is for the first ninety seconds after a guest sits down, and for the passer-by deciding whether to come in. The WiFi code is for the ten minutes after that, when someone wants to get online without asking a server to spell out a password. The review code is for the end, when the meal is over and the guest is happiest.
Make all three in the same colours and dot style so they look like part of your table setting. What has to differ is the label under each one — a guest cannot tell two codes apart by looking at the pattern, so the words beneath them do all the work.
The single decision that determines whether you ever reprint is which address you encode. A static QR code has the destination baked into the pattern, so the printed square can never be redirected. Choose an address you own and can update — usually yourdomain.com/menu — and the code stays correct forever while the content behind it changes freely.
This is why replacing the file at the same address matters so much. If your menu is a PDF sitting at yourdomain.com/menu.pdf, uploading a new PDF over the old one at that exact filename leaves every table tent, window decal and takeaway sticker in the building still working. Change the filename to menu-spring-2026.pdf and you have just invalidated every code you printed.
Seasonal changes follow the same rule. A restaurant that swaps its menu four times a year needs one permanent menu address and four sets of content, not four QR codes.
The expensive mistake is pointing the code at a temporary file-share link — a Google Drive preview, a Dropbox share, a WeTransfer download. Those URLs can be revoked, they change when the file is re-uploaded, and some ask the guest to sign in or open an app first. A guest holding a phone over a table tent will not do that.
If you remember one thing: encode an address you control, and change what lives at that address. Every reprint a restaurant ever pays for is caused by encoding something temporary.
Placement is really a question of distance. A seated guest holds a phone about 25–30 cm from a table tent; a person on the pavement is 1.5–2 m from your window. The rough working rule is that a code should be about one tenth as wide as the distance it is scanned from, which is why a window code has to be roughly ten times the area of a table code.
Put the menu and WiFi codes together on the table tent, clearly labelled, and keep the review code off the table entirely — it belongs on the check presenter where the timing is right.
| Placement | What it is for | Scan distance | Minimum printed size |
|---|---|---|---|
| Table tent | Menu + guest WiFi, seated guests | 25–30 cm | 2.5 cm (1 in); 3–4 cm is safer |
| Window or door decal | Menu preview for passers-by | 1.5–2 m | 15–20 cm |
| Printed menu corner | Full menu, allergens, wine list | 25–30 cm | 2 cm, 2.5 cm preferred |
| Check presenter or receipt | Google review, after the meal | 25–30 cm | 2–2.5 cm |
| Takeaway bag or box lid | Reorder link or review | 30–50 cm | 3 cm |
| A-board or pavement sign | Menu, from a few steps away | 1–1.5 m | 10–15 cm |
Below about 2 cm a QR code becomes unreliable on older phone cameras, and in dim restaurant lighting the failure rate climbs fast. Treat 2.5 cm as your floor for anything a guest holds, and go larger whenever there is room — there is no scanning penalty for a code being too big.
Every code needs a quiet zone of four modules of clear space on all four sides. A module is one of the small squares in the pattern, so on a 3 cm code that is roughly 4–5 mm of empty margin. Designers routinely crop this away to make a table tent look tidier, and the result is a code that scans in the studio and fails on the floor. Keep the margin blank — no border rule, no leaf motif, no price sitting in it.
For durability, laminate matte, not gloss. Gloss laminate reflects overhead lighting straight back into the camera and blanks out part of the pattern, and restaurant lighting is almost always directly above the table. Matte scatters that light. The same applies to varnished wood table tents and glossy card stock.
Assume spills. A laminated or acrylic table tent survives wine and grease; uncoated card does not, and a code with a stained or scuffed corner loses data. Printing at error correction Q (about 25% recovery) or H (about 30%) buys you tolerance for wear and for a centre logo, at the cost of a denser pattern that needs slightly more size. If you are adding a logo to the middle of the code, Q or H is not optional.
Send SVG to the printer rather than PNG whenever they accept it. Vector stays sharp at any size, which matters most on the window decal, where a scaled-up PNG turns into soft, grey-edged modules that cameras struggle to read.
A WiFi QR code stores your network name and password as plain text inside the pattern. Anyone can point a decoding app at it and read the password in full — the code is not encryption, it is just a faster way of typing. Print it only for a guest network that is isolated from your till, your back office and your own devices.
That caveat aside, it is the highest-value code in a cafe. Guests join without asking, staff stop reciting a password twenty times a shift, and it sits happily beside the menu code on the same table tent.
Rotating the guest password means reprinting the code — there is no way around that with a static code. Most restaurants settle on a stable guest password, change it once or twice a year, and print a fresh batch of tents at the same time. You can make one at the WiFi QR code tool.
A review code works or fails entirely on timing. At the entrance the guest has nothing to say yet. At the check, when the meal has just gone well, the ask is natural and the phone is already in hand for payment. That is the only place the review code should live — the check presenter, the receipt footer, or the takeaway bag.
The code opens your public Google Business Profile listing, the same page any customer can already reach by searching for you. It does not submit a review, it does not know who scanned it, and it cannot filter anything — it simply saves the guest from typing your name into Google and finding the right button.
Label it honestly and keep it short: "Enjoyed it? Leave us a review" does more work than a code with no caption. Do not offer a discount in exchange for a review; Google's policies prohibit review gating and incentivised reviews, and listings do get penalised for it.
Test the printed proof, not the file on your screen. A code that scans instantly from a laptop display can fail on laminated card under a dim pendant lamp, and you only find out after a thousand table tents arrive.
Sit at an actual table in the lighting you use during service — evening lighting, not the fluorescents you clean under. Hold the phone the way a guest would: at arm's length and at an angle.
Use at least two phones: a current model and the oldest one you can borrow from a member of staff. New camera stacks decode marginal codes that four-year-old phones will not. If the old phone hesitates for more than a second or two, print the code bigger or drop the logo, then test again.
Check the destination too, not just that something scanned. Confirm the menu opens on mobile, loads in a few seconds on cellular rather than your WiFi, and does not land on a login screen or a PDF that opens at illegible zoom.
Keep a stack of printed menus behind the host stand and offer one without being asked. Some guests have no smartphone, no data allowance, a dead battery, or low vision that makes a phone menu unusable. A QR code should be the convenient option, never the only option.
This is also a legal point in several jurisdictions. Accessibility rules in the US, the EU and the UK have been applied to digital-only menus, and a restaurant that can only serve a menu through a phone screen is exposed. The practical answer is cheap: print a dozen menus, keep them clean, and hand one over the moment a guest looks stuck.
Fix the digital side too: the page behind the code should be readable at default phone text size, allow pinch-zoom, and list allergens as real text rather than as an image.
A static QR code has the destination encoded in the pattern itself, so it needs no server and never expires. The honest trade-off is that it also cannot be edited after you download it, and it cannot count scans. There is no dashboard, because nothing is reporting back — to us or to you.
In practice neither limit hurts if you set it up as described above. Editability is solved by pointing at an address you control and changing the content there. Scan counts, if you want them, come from the analytics on the page the code opens — your menu page can tell you how many mobile visits it received, which is the number you actually care about.
What you get in return is a code with no subscription behind it. A dynamic code routes through a third party's redirect service, so the printed square in your window stops working if that company folds, raises its price, or ends your trial. A static code has no such dependency.
Free, no sign-up, and your code never expires.
Got your code? ☕ Buy me a coffee — it keeps this tool free for everyone.