How to Make a QR Code for a Restaurant Menu
Most guides to this start by telling you to build a website. You do not need one. You already have the menu, as a PDF your designer sent or a photo you took this morning, and that file can be the destination.
This is the practical version: how to make the code, where to put it, how big to print it, and the handful of mistakes that turn a menu QR code into something guests give up on.
Start with the file you already have
A QR code cannot hold a menu. It holds a few hundred characters, which is a link and nothing more. So every menu QR code works the same way underneath: the menu lives somewhere, and the code points at it.
That "somewhere" has three realistic options.
A page on your website. Best if you already have a site with a maintained menu page. Worst if you do not, because now the QR code project has become a website project.
A file hosted for you. Upload the PDF or image, get a link, point the code at it. No page to build, nothing to maintain. This is what most restaurants actually want, and it is what SunriseQR does with hosted files.
A Google Drive or Dropbox link. Works, and it is free, but the viewer wraps your menu in a file-sharing interface with sign-in prompts and download buttons. Guests at a table do not want a Drive UI. Sharing permissions also drift, and a menu that shows "Request access" at dinner service is worse than no code at all.
Make the code dynamic, not static
This is the decision that matters, and it is easy to get wrong because both kinds look identical.
A static code has the destination baked into the pattern. Change the menu URL and you change the pattern, which means reprinting every table tent, decal and card.
A dynamic code encodes a short link you control. The pattern is fixed; the destination is a setting. When the spring menu arrives, you swap the file and every code already on your tables serves the new one. (The full comparison is here.)
Restaurant menus change constantly, so this is not a close call. Anything printed for a menu should be dynamic.
Four steps
- Upload the menu. PDF or image. Most restaurant menus are between 200 KB and 5 MB, so there is nothing to compress and no quality to lose.
- Point a dynamic code at it. The code encodes a short link to the file, which is what keeps it editable.
- Style it so it belongs on your table. Your colors, your logo in the middle, and a frame caption. A plain black-and-white square looks like a printer test page on a nice table.
- Download and print. SVG or PDF for a print shop, PNG for a screen.
Where to put it, and how big
The size rule that actually matters is the ratio between how far away the phone is and how big the code is. A working guideline is the code should be about one tenth of the scanning distance.
| Placement | Scan distance | Minimum size |
|---|---|---|
| Table tent, card on the table | About 30 cm | 3 cm / 1.2 in |
| Bottom of a printed menu or receipt | About 30 cm | 3 cm / 1.2 in |
| Window decal, read from the pavement | About 1 m | 10 cm / 4 in |
| A-board or sandwich board | About 2 m | 20 cm / 8 in |
Two placement notes that cost real scans:
Leave the quiet zone. The blank margin around a code is part of the code. Crowding it with a border or a logo is one of the most common reasons a code that scanned fine in Illustrator fails on a laminated card.
Do not laminate with a high-gloss finish. Glare under restaurant lighting defeats the camera. Matte laminate is fine and worth asking for.
Tell people what it is
A bare code on a table gets fewer scans than the same code with three words under it. "Scan for menu" is enough. People scan when they know what they are getting, and a naked black square asks them to gamble.
Test it before the print run
Scan the final artwork with both an iPhone and an Android phone, from the distance a guest will actually hold it, under the lighting your room actually has. Not on your monitor at arm's length in daylight.
Then hand your phone to someone who has not seen it and watch what they do. If they hesitate, the caption is unclear or the code is too small.
What a hosted PDF is like for a guest
Worth knowing before you commit, because nobody else will tell you.
A PDF opens in the phone's own viewer. It loads instantly, there is no page to wait for and no cookie banner in the way, and it looks exactly like the design you approved because nothing reflows it.
The trade-off is that a dense one-page menu means pinch-to-zoom on a phone screen. If your menu is a tight two-column A3, consider exporting a phone-shaped version for the QR code and keeping the big one for print. Same file slot, much better on a 6-inch screen.
There is also no ordering or payment. A hosted menu is a menu, not a storefront. If you need ordering, you need an ordering platform, and the QR code should point at that instead.
What a guest should never get is an advertisement. Some QR code providers fund their free and entry-level plans by serving a full-screen ad between the scan and the destination, usually with a countdown of a few seconds. On a table tent that is your guest, at your table, watching an ad you did not choose, cannot see, and will be blamed for. Check for it before you print anything: here is what an interstitial is and how to test any provider in ten seconds. SunriseQR does not do it on any plan.
When the menu changes
This is the part worth setting up correctly on day one, because it is the whole reason to use a dynamic code.
Swap the file. Every code already printed starts serving the new menu, usually within seconds. No new artwork, no reprint, no sticker over the old code.
What you should not do is upload the new menu as a separate file and point a new code at it. That gives you a new link, which means the table tents on your tables still point at the old one. Replace the existing file instead of adding another.
Common mistakes
- A static code. The one mistake you cannot fix later without reprinting.
- A code that expires. Some free generators stop redirecting when a trial ends, which turns every table tent into a dead end. SunriseQR codes never expire, on any plan.
- A code that shows your guests an ad. Scan your own finished code on a phone that is not logged into the provider, and watch whether anything loads before your menu does. More on why this happens.
- Too small for the placement. See the table above.
- No caption. Three words roughly doubles the scan rate in practice.
- A shortened link inside a QR code. Pointless indirection: the code is already a link. It just adds a hop that can break.
- Never checking the numbers. If you can see scans, you can tell whether the table tents work better than the window decal. Scan tracking is how you find that out.
Try it
Upload a menu and get a QR code. Print it once, and change the menu as often as you like.