The Number One Mistake: Linking to a PDF
A PDF menu forces customers to download a large file, pinch-zoom on a small screen, and scroll through multiple pages. On a busy Friday night with 4G congestion, a 15 MB PDF can take 20–30 seconds to load. Customers give up.
The solution: a lightweight, mobile-first web menu that loads in under 2 seconds.
What a High-Converting QR Menu Looks Like
Load time: Under 2 seconds on 4G. Test with Google PageSpeed Insights (mobile score).
Structure:
- Category tabs at the top (Starters, Mains, Desserts, Drinks)
- Each item: name, 1-line description, price, allergen icons
- "Add to order" button if integrated with table ordering
Allergen display: UK Natasha's Law requires the 14 major allergens to be clearly indicated on every dish. A digital menu makes this easier and always up-to-date — change an ingredient, update the page.
Photography: Real photos of signature dishes increase average order value. Avoid stock photos — diners notice and it erodes trust.
Language: Include a language switcher if you serve international guests. A one-tap English/Spanish/French/Arabic toggle doubles accessibility for a tourist-area restaurant.
QR Placement on the Table
Best placements (highest scan rate):
1. Tent card at the centre of the table — eye level when seated, visible immediately
2. Inside the menu cover where the paper menu used to be
3. On the paper placemat — scannable from the moment of seating
Avoid: Under the table, on the floor-standing blackboard (distance too great), or on the wall opposite the table.
Table-Side Ordering Integration
A QR menu that also accepts orders reduces server trips and increases spend. Customers who browse a full menu order more items — especially starters and sides they might not have asked for verbally.
If table ordering is not feasible, include a "Call Server" button. A digital menu without a clear next-action step leaves the customer stranded.
Keeping the Menu Current
The single biggest advantage of a QR menu over printed: update it instantly. Change the specials board before service, remove sold-out items in real time, add seasonal items immediately. Diners who order an item and are then told it is unavailable have a frustrating experience. Real-time availability prevents this.
Putting this into practice
Start with the smallest real test you can run. Generate the code, print it at the exact size you plan to use, and scan it with two different phones in the lighting where it will live. Check that the destination page loads quickly on a mobile connection and that the call to action next to the code tells people what they will get. If anything feels slow or unclear, fix it before you print a full batch, because reprints cost more than a short test. Keep a note of the size, material, and placement that worked so the next batch starts from a proven setup.
Common mistakes to avoid
The most common mistakes are easy to avoid once you know them. Long payloads make modules tiny, low contrast makes edges hard to read, and text placed too close to the border eats the quiet zone the scanner needs. Covering a corner finder pattern with a logo or a sticker breaks detection entirely, and a code placed behind glare or on a curved surface fails even when the print is perfect. Review each of these points on a proof copy, and treat any failure as a reason to adjust the design rather than a reason to blame the scanner.
Quick checklist
- Keep the payload as short as practical so modules stay large.
- Keep dark modules on a light background with strong contrast.
- Leave a clear quiet zone on all four sides of the symbol.
- Test the printed code at the real viewing distance and lighting.
- Confirm the destination page loads fast on a phone.
- Recheck the code after any change to the link, design, or placement.
Related tools and guides
- For local payments, the [Pakistan payment QR](/pakistan-payment-qr) page explains the regional flow and what customers see.
- The [regional payment QR](/regional-payment-qr) guide covers payment codes used across different markets.
- The [bulk generator](/bulk-generator) builds many codes from a table when one-off generation would take too long.
- Test every code with the [QR scanner](/qr-scanner) on more than one phone before you publish or print it.
- The [UTM builder](/utm-builder) adds campaign parameters so scans show up separately in your analytics.
- The [blog](/blog) collects more guides on sizing, printing, security, and payments for QR codes.