QR Code Menus for Restaurants: Setup Guide
QR code menus did not leave with the pandemic, they got better. This is the complete setup guide for restaurant and cafe owners: build a menu code you can edit after printing, place it where guests scan, and finally see which dishes earn their spot.

Where to Place the Code (Table Tents, Windows, Receipts)
Design gets all the attention, but placement decides your scan rate. A guest who is seated, hungry, and already holding a phone is the easiest scan you will ever get. A code stuck on a wall behind the host stand is the hardest. Put the code where the moment of need lives.
The placements that work
- Table tent or table sticker. Your primary placement. At the seat, eye-level, with a one-line prompt like "Scan for the full menu." This is where 60 to 80 percent of your scans come from.
- Window or door decal. Captures passersby before they walk in. Point this at a menu plus your hours, or a waitlist or pickup page after close.
- Receipt footer. The perfect spot for a reorder link or a Google review QR code, since the guest just finished a (hopefully great) meal.
- Counter or register sign. For counter-service and cafes, the code by the till handles order-ahead and loyalty signups.
Give each placement its own link
Here is the trick most owners miss: use a different short link per placement, even if they all point at the same menu today. flyn.to/cafe-table, flyn.to/cafe-window, flyn.to/cafe-receipt. Now your dashboard tells you the table tents drive 90 percent of scans and the window decal almost none, which is information you can act on. Same menu, four codes, four data streams.
Print the code at least 2cm by 2cm (see the QR code size guide for larger surfaces) for arm's-length scanning, and leave a clear "quiet zone" of empty white space around it equal to about four modules (the little squares). Crowding the code with your logo or a border is the number one reason a table tent refuses to scan on older phones. If a code is misbehaving, our guide to why QR codes do not scan walks the fixes in order.
Tracking Which Items and Specials Get Scanned
This is the upgrade no static PDF code can give you. A plain URL code is invisible after printing: you have no idea whether ten guests scanned it or a thousand. Point each code at a tracked short link instead and every scan becomes a logged event, so you can finally manage the menu with data instead of hunches.
What every scan tells you
- Count and time. Bucket scans by hour and day. A lunch spike at noon confirms the obvious; a surprise 4pm cluster might be a happy-hour opportunity you are missing.
- Device and browser (Pro). Mostly iOS and Android from the native camera, which confirms your menu page must be mobile-first.
- Approximate location (Pro). City-level, useful the moment you run more than one location.
Measuring specials and individual sections
Give your specials board, your wine list, and your dessert menu each its own short link and code. Now you can see, in numbers, that the dessert QR on the table gets scanned a third as often as the main menu, or that nobody opens the wine list, which is a merchandising problem you can actually fix. The deeper per-scan breakdowns (geo, device, referrer) live on Pro analytics, and the full method is covered in how to track clicks on a link.
The restaurants that get value from QR menus are not the ones with the prettiest codes. They are the ones that gave every placement its own link, then actually read the numbers before reprinting anything.
None of this requires extra hardware or a POS integration. It is the redirect doing what it already does on every tracked QR campaign, applied to a menu.
Frequently Asked Questions
Are QR code menus still worth it now that the pandemic is over?
What is the difference between a static and a dynamic QR menu?
flyn.to/menu) that redirects to your menu, so you can swap the destination from your dashboard at any time and the printed code keeps working. Dynamic codes also record every scan (time, device, location) because the redirect logs each hit. For a menu, which changes constantly and is printed in volume, dynamic is the only sensible choice. Flyn generates dynamic codes for every short link at no cost.Can I change my menu without reprinting the QR codes on the tables?
Where should I place the QR code in my restaurant?
How do I see which menus or specials guests are scanning?
Do guests need a special app to scan my menu QR code?
Should my QR menu link to a PDF or a web page?
How do QR menus work for restaurants with multiple locations?
flyn.to/downtown-menu and flyn.to/airport-menu) so each site runs its own prices, hours, and specials while you manage them all from a single dashboard. A chain-wide change becomes a few edits in one place instead of new table tents shipped to every store. Because each location has its own link, your scan data is already segmented by site, so you can see which location scans most and which new branch is slow to adopt. For dozens of codes across many tables, generate them in bulk via CSV or the API to keep naming and tagging consistent.Free tools for this
Three Flyn tools that pair well with the strategy in this article, all free, no signup needed.
UTM Builder
Build campaign-tracked URLs in seconds.
Broken Link Checker
Scan any page for dead links and 404s.
Open Graph Checker
Preview how URLs unfurl on social.
Keep reading
Three related deep-dives from the Flyn blog.

How to Track Which Posts Drive Sales, Not Just Clicks
19 min read
Email Newsletter Click Tracking: Measure Your Real CTR
12 min read

How to Choose a Branded Short Domain for Your Links
13 min read
Ready to try Flyn?
Free plan includes 25 links/month, full analytics, and access to all 30+ free tools above. No credit card required.
Already a member? Log in

Karan Bhakuni is the founder of Flyn. He writes about branded links, click analytics, and the link-management tooling growth teams and creators actually need, drawn from building Flyn and reading a lot of user feedback.