Restaurant menu QR code generator
100% Private & Local — Your data never leaves your browser. These QR codes are permanent and will never expire.
Restaurant menu settings
Design
Add a centre logo
More design options
Contrast 11.5:1 between the modules and the background.
A logo sits at the centre and holds the level at H. Its width limit follows the symbol: 14% on the smallest code, 30% on a dense one.
Live preview & export
Enter the address of the menu page you publish.
Export
Raster, for screens
Complete the form to enable the downloads.
Export size and encoded text
- Payload
- Nothing encoded yet
- Symbol
- Not built yet
- Recovery
- Q
Waiting for input
Encode the address of the menu you already publish, so a table code opens it in one scan. This tool does not host menus; it encodes the link you give it.
When someone scans it
The phone opens your menu URL in its browser. If you enabled the table parameter, the number is appended to the query string and arrives with the request.
What the code contains
One URL, character for character as you typed it, plus the table parameter if you asked for one. There is no shortener, no branded domain and no intermediate hop, so the address the diner's browser resolves is your own.
That has a practical consequence worth planning around: a shorter URL produces a smaller, coarser grid that scans faster from a table tent in dim light. A menu at example.com/menu encodes into far fewer modules than the same page reached through a long path with tracking parameters attached.
Table numbers as a query parameter
Turning on the table option appends table=<your value> to the query string. The value is percent-encoded, so a label such as "Terrace 4" survives the trip intact.
The parameter travels with the request and stops there. Nothing on this site reads it, and your menu page will ignore it unless it has been built to look for it. It is worth adding when your ordering system expects a table identifier in the URL, and worth leaving off when the menu is a static page or a PDF.
Printing once and changing the menu later
The code is permanent because it is static: the URL is baked into the pattern and cannot be rewritten afterwards. Reprinting is only ever forced by the address changing, never by this site.
So choose the address with reprinting in mind. A stable path on a domain you control — example.com/menu — lets you replace the seasonal menu behind it as often as you like without touching a single printed code. A link to a file whose name carries a date, or to a third-party menu host that may reorganise its URLs, is the version you will end up reprinting.
Questions and answers
Can I upload the menu itself and get a code for it?
No. A QR code holds at most a couple of thousand bytes, which is nowhere near a menu, and this site has no storage to put a file in — there is no server behind it. Host the menu on your own site or any service you already use, then encode that address here.
Should the code point at a PDF or a web page?
A web page, in most cases. Phone browsers render a responsive page immediately, while a PDF often downloads first and then opens zoomed out at a size that needs pinching. If a PDF is what you have, the PDF document tool covers the same link with notes on how phones handle it.
Do I need a separate code for every table?
Only if your menu page uses the table number. Each distinct value produces a different code, so twenty tables mean twenty exports. Where the number is not read by anything downstream, one code reprinted twenty times is simpler and just as effective.
Will diners be tracked when they scan?
Not by this site — it never sees the scan. What happens after the browser opens your URL is governed by your own page: its analytics, its cookies, its consent banner. If your menu page sets cookies or loads a third-party script, that applies to a visitor arriving by QR code exactly as it does to one arriving by search.
How a static QR code works
Every code on this site is static: the payload is written into the black and white modules themselves. Nothing is looked up when the code is read, no server of ours takes part, and no subscription holds the printed code up. The same property is the limit — once it is printed, what it contains cannot be changed.
Three things then decide whether a printed code reads: how many bytes the payload came to, which recovery level absorbs the damage, and how wide a single module ends up on paper. These guides work through each of them with the numbers.