Skip to main content
Guide September 19, 2026

QR Codes for Restaurant Menus: A Practical Guide

For the full feature breakdown of what's available — the business-page type, expiry, analytics — see the restaurant QR code overview. This is the setup sequence: what to actually do, in order, before you print anything for your tables.

Before you generate anything

Decide what the code should actually point to first. Three common answers: a PDF menu you already have hosted somewhere, an existing online-ordering page from a platform you already use, or a business page built here with your hours, description, and contact info alongside a link to your menu. All three are valid — the mistake to avoid is building something new here that duplicates a page you already maintain elsewhere. Point at what you've already got if you've got it.

The setup sequence

  1. Build the business page — name, hours, address, contact buttons, and your link list pointed at your actual menu or ordering page.
  2. Make sure it's dynamic, not static — this is what lets you update it later without reprinting a single table-tent.
  3. Decide whether you need an expiration date now, or can add it later. If you're launching alongside a specific seasonal menu, set the expiry to match when that menu ends. If not, skip it entirely for now — it's just as easy to add later as it is now.
  4. Print a single test copy before ordering a full run. Scan it yourself on both an iPhone and Android, and have someone else try it too — a link typo or a wrong file upload is a lot cheaper to catch on one sheet of paper than on fifty table-tents.
  5. Print the full run once the test copy checks out.

When the season changes

Edit the business page's menu link (or the menu content itself) to point at the new season's menu, and update the expiration date if you're using one. The table-tents you already printed don't need to be touched — that's the entire point of having gone dynamic in the first place. See the full expiring codes guide for the mechanics of that setting.

The one mistake worth flagging

Don't set a scan-count limit on a code that's meant to stay up indefinitely — it's the right tool for a one-time promotion, but the wrong one for a standing menu, since it'll quietly stop working the moment it hits the number and nobody will notice until a guest tells you. If you're not intentionally limiting scans, leave that field empty.