QR Dining • Article

How to Put Your Restaurant Menu PDF Online and Make a QR Code (Free, Step by Step)

I
By Ionut Panescu
4 November 2026

You already have a menu. Maybe it is a Word document, a Canva design or a PDF your designer sent you. The question is simple: how do you get that menu onto your customers’ phones with a QR code on the table?

This guide shows you how to do it yourself, for free. It starts very easy — no website needed — and gets more advanced step by step. Stop at whichever level suits you. Every route ends the same way: a link to your menu, turned into a good-looking QR code with our free QR code generator.

Pick your level

LevelMethodTime
1 · EasiestGoogle Drive or Dropbox — no website needed5 min
2 · EasyWordPress, Wix or Squarespace10 min
3 · MediumYour own hosting (cPanel or FTP)15 min
4 · AdvancedA permanent menu link with a redirect20 min
5 · ExpertA mobile menu page with scan tracking45 min
The golden rule: your QR code is printed once, but your menu changes all the time. Whatever level you choose, make sure you can update the menu without changing the link. Then you never have to reprint your QR codes. Each level below explains how.

Before you start: make a menu PDF that works on a phone

Most people will read your menu on a small screen, standing at a bar or sitting at a table. A beautiful A3 print menu can be painful to read on a phone. A few minutes here makes a big difference:

Level 1 · Easiest: Google Drive or Dropbox (no website needed)

If you don’t have a website, or don’t want to touch it, this is for you. It takes about five minutes.

Google Drive

  1. Go to drive.google.com and sign in.
  2. Click New → File upload and choose your menu PDF.
  3. Right-click the file and choose Share.
  4. Under General access, change “Restricted” to Anyone with the link (role: Viewer).
  5. Click Copy link. That is your menu link.
Updating your menu without breaking the QR code: don’t delete the old file and upload a new one — that creates a new link. Instead, right-click the file, choose File information → Manage versions, then Upload new version. The link stays exactly the same.

Dropbox

  1. Upload the PDF to your Dropbox.
  2. Hover over the file and click Share, then Copy link.
  3. To update it later, upload a new file with exactly the same name into the same folder and choose to replace it. The shared link keeps working.

Good: free, fast, no technical skills. Not so good: guests see a Google or Dropbox page instead of your brand, and the link is long and messy (which makes a denser QR code).

Level 2 · Easy: upload it to your website builder

If you already have a website on WordPress, Wix or Squarespace, put the menu there. Guests stay on your own domain, and it looks more professional.

WordPress

  1. In your dashboard go to Media → Add New Media File and upload your PDF.
  2. Click the uploaded file and press Copy URL to clipboard. It will look like https://yourrestaurant.com/wp-content/uploads/2026/11/menu.pdf.
  3. That is your menu link.

Watch out: if you upload a new menu next season, WordPress gives it a new address and your QR code would still point to the old one. Either use a media-replace plugin (for example “Enable Media Replace”) to swap the file while keeping the URL, or jump to Level 4 for a permanent link.

Wix and Squarespace

Even better: create a page called Menu (for example yourrestaurant.com/menu) with a big “Open our menu” button that links to the PDF. Point your QR code at that page instead of the file. When the menu changes, you just change the button — the QR code never changes.

Level 3 · Medium: upload the PDF to your own hosting

If your website is on normal web hosting (most hosting companies give you cPanel or FTP access), you can put the file right on your domain with a short, clean address.

Using cPanel File Manager

  1. Log in to cPanel and open File Manager.
  2. Open the public_html folder (this is the root of your website).
  3. Click + Folder and create a folder called files.
  4. Open it, click Upload and upload menu.pdf.
  5. Your menu link is now https://yourrestaurant.com/files/menu.pdf. Open it on your phone to check it works.

Using FTP (FileZilla)

  1. Install the free FileZilla client.
  2. Connect with the FTP host, username and password from your hosting company.
  3. On the right side, open public_html, create the files folder and drag your PDF into it.

To update the menu: upload the new PDF with exactly the same name and overwrite the old one. The link and the QR code keep working.

Seeing the old menu after updating? Phones and browsers sometimes keep an old copy of a PDF for a while. Clear the browser cache or open the link in a private tab to check. Level 4 shows how to stop this for good.

Getting a bit technical?

You don’t have to do any of this. QR Dining gives you a ready-made digital menu with your own QR code: update dishes and prices in seconds from your phone, add photos and multiple languages, and never touch a PDF again.

See how QR Dining works

Level 4 · Advanced: a permanent menu link you can redirect anytime

This is the trick professionals use. Instead of putting the PDF address in your QR code, you put a short, permanent address like https://yourrestaurant.com/menu in the QR code. That address simply redirects to whichever PDF is current.

Why it’s great:

This works on most hosting that runs the Apache web server (which includes most cPanel hosting).

Step 1: upload your PDF

Upload it to the files folder as in Level 3, for example files/menu-autumn-2026.pdf.

Step 2: add the redirect

In File Manager, open public_html and find the file called .htaccess. (If you can’t see it, turn on Settings → Show Hidden Files. If it doesn’t exist, create it.) Download a backup copy first, then add these lines at the top:

# Permanent menu link for the QR code
RedirectMatch 302 ^/menu/?$ /files/menu-autumn-2026.pdf

Save it and open https://yourrestaurant.com/menu on your phone. Your PDF should open.

Next season, upload menu-winter-2026.pdf and change only the file name in that line. Done.

Why 302 and not 301? A 301 redirect means “moved forever”, and phones and browsers remember it. If you later point it to a new menu, people who scanned before might still be sent to the old PDF. A 302 means “for now”, so every scan checks for the current menu.

Why ^/menu/?$? It matches exactly /menu or /menu/ and nothing else, so it can’t clash with other pages on your site. Make sure you don’t already have a page called “menu” on your website.

Step 3 (optional): always show the newest PDF

To stop phones from showing an old, saved copy of your menu, add this to the same .htaccess file:

# Make sure guests always get the latest menu PDF
<IfModule mod_headers.c>
  <FilesMatch "\.pdf$">
    Header set Cache-Control "no-cache, must-revalidate"
  </FilesMatch>
</IfModule>

If anything goes wrong after editing .htaccess (for example a “500 Internal Server Error”), simply upload your backup copy again and everything is back to normal.

Level 5 · Expert: a mobile menu page with tracking

A PDF is quick, but it has limits. On many Android phones a PDF downloads first and opens in a separate viewer, and you can’t see how many people scanned your code. The expert solution is a small, fast menu page on your own website. It loads instantly, shows your brand, links to each menu, and lets you measure scans.

Step 1: create the page

In public_html, create a folder called menu and inside it a file called index.html. Paste this in and change the name, colours and file names to yours:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Menu | Trattoria Bella</title>
<style>
  body { margin:0; font-family:Arial, sans-serif; background:#faf7f2; color:#222; text-align:center; }
  header { background:#1a1a1a; color:#fff; padding:28px 16px; }
  h1 { margin:0; font-size:26px; }
  main { max-width:420px; margin:0 auto; padding:24px 16px 40px; }
  a.btn { display:block; margin:0 0 14px; padding:18px; border-radius:14px;
          background:#fff; color:#222; text-decoration:none; font-size:19px;
          font-weight:bold; box-shadow:0 2px 10px rgba(0,0,0,.08); }
  p.small { color:#777; font-size:14px; }
</style>
</head>
<body>
<header><h1>Trattoria Bella</h1></header>
<main>
  <a class="btn" href="/files/food-menu-autumn-2026.pdf">Food menu</a>
  <a class="btn" href="/files/drinks-menu.pdf">Drinks &amp; wine</a>
  <a class="btn" href="/files/desserts.pdf">Desserts</a>
  <a class="btn" href="/files/allergens.pdf">Allergen information</a>
  <p class="small">Wi-Fi: TrattoriaGuest &middot; Ask our staff about today's specials</p>
</main>
</body>
</html>

Your QR code now points to https://yourrestaurant.com/menu/. To change a menu, upload the new PDF and edit one link on this page. (If you set up the Level 4 redirect, remove that line first — this page replaces it.)

Step 2: more languages

Tourists love a menu in their language. Make one PDF per language and add a row of buttons at the top of the page, for example English · Español · Deutsch, each linking to its own PDF.

Step 3: count your scans

If your website uses Google Analytics, add tracking tags to the link inside your QR code:

https://yourrestaurant.com/menu/?utm_source=qr&utm_medium=table&utm_campaign=menu

Add your Analytics tag to index.html as well. In Analytics you will then see exactly how many guests opened the menu from a table QR code. Use a different utm_medium for each place — table, window, flyer — to compare which works best. Note: this only works with a web page like the one above; a PDF on its own can’t be tracked.

Now make your QR code

Whichever level you chose, you now have one link. Time to turn it into a QR code that looks like it belongs in your restaurant.

  1. Open our free QR code generator. It’s free, with no sign-up, and the codes never expire.
  2. Paste your menu link into the Website box.
  3. Under Style, tap the Menu quick style for an instant “Scan for menu” look, or choose your own dot and corner shapes.
  4. Under Colours, pick your brand colour. Keep the code dark on a light background so every phone can read it.
  5. Under Logo, upload your restaurant logo and choose a square, rounded or circle shape. Error correction goes up automatically, so the code still scans.
  6. Under Frame & text, add a call to action such as SCAN FOR MENU or VIEW OUR MENU.
  7. Check that the preview says Scan test passed.
  8. Download: choose SVG for your printer or designer (it stays sharp at any size), or PNG at 2048 px for printing at home.
Bonus: make a second QR code with the Wi-Fi type so guests can join your Wi-Fi without asking for the password. Put it on the same table card.

Printing tips

Common mistakes to avoid

Frequently asked questions

Is all of this really free?

Yes. Google Drive and Dropbox have free plans, most hosting already includes cPanel, and our QR code generator is free with no account.

Will my QR code ever stop working?

The QR code itself never expires — it simply contains your link. It only stops working if the link stops working, for example if you delete the file or your website goes offline. Use the update tips in each level and it will keep working for years.

Can I change the menu without reprinting the QR code?

Yes, as long as the link stays the same. Replace the file in place (Levels 1–3), change the redirect (Level 4) or edit your menu page (Level 5).

PDF or online menu — which is better?

A PDF is the quickest way to start. An online menu is easier to read on a phone, updates instantly, and can show photos, allergens and several languages. That is exactly what QR Dining does for you.

Rather not deal with PDFs, hosting and .htaccess?

Let us handle it. QR Dining sets up a beautiful mobile menu for your restaurant, café or bar, with your own QR codes. Change prices and dishes in seconds, add photos and languages — no reprinting, no technical work.

Get your QR Dining menu

Want a menu like this for your restaurant?

Set up a digital QR code menu in minutes with QR Dining.

Get started
← Back to Free Restaurant QR Code