A neighborhood restaurant’s menu page has one job: let a hungry stranger on a phone decide, in under a minute, whether this is the place tonight. Almost every menu page that fails does so for the same reason, which is that it was built as a document to be filed rather than a page to be read.
The fix is not a redesign of the food. It is a change in format, order and maintenance. A menu that lives as an ordinary web page can be read on a narrow screen, found in a search, linked to directly, and corrected the same afternoon the kitchen changes it.
Why a PDF menu fails on the web
A PDF fails because it was designed to preserve a printed page, and a phone screen is not a printed page. The file arrives at a fixed width, so a reader on a 390 pixel screen gets a scaled-down A4 sheet and has to pinch, zoom and drag across it to read a single section. That is not a small inconvenience. It is the exact moment most first-time visitors give up and go back to the search results.
The problems stack up beyond the zooming.
- It is largely invisible to search. Google’s own SEO starter guide is written around pages with real text, headings and links. A menu sealed inside a downloadable file gives a search engine very little to work with when someone searches for a dish the restaurant actually serves.
- It is a poor experience for assistive technology. The W3C Web Accessibility Initiative’s guidance on WCAG is built around content that can be perceived and operated in different ways, including resized text and screen reader output. An exported menu, especially one exported from a design tool as a flattened image, often carries no reliable reading order at all.
- It is slow. A print-resolution file is many times the weight of the same content as text. Page speed is not an abstract concern here; Core Web Vitals describe how quickly a page becomes usable and how stable it feels while loading, and a heavy download on a patchy street connection fails that test.
- It goes stale, predictably. Updating a PDF means opening the source file, editing, exporting, uploading and replacing the link. That friction is exactly why so many restaurant sites carry a menu dated last spring.
A quick comparison of menu formats
| Format | Found in search | Readable on a phone | Effort to change one price |
|---|---|---|---|
| PDF linked from the nav | No | Pinch and zoom | Edit, export, upload, relink |
| Photo of the printed card | No | Pinch and zoom | Reprint, rephotograph, upload |
| Third-party menu widget | Depends on the vendor | Usually | Vendor dashboard, then wait |
| Menu built as a page | Yes | Yes, text reflows | Edit the entry, publish |
There is one reasonable use for a PDF: offering it as a secondary download for someone who wants to print a set menu for a group booking. That is fine. It just cannot be the only version of the menu on the site. Our menu website design service exists largely because this single decision, page versus file, changes how a menu performs for everything else on this list.
Structuring the page the way people actually decide
Order the page by how a reader makes a decision, not by how the printed card is laid out for someone already sitting down. At a table, a guest reads top to bottom because the server handed them the card. On a phone, they are skimming for a signal that this is the right kind of place, at the right price, for the right occasion.
That means the top of the menu page should carry a short orienting block before the first dish: what kind of kitchen this is, the rough price range, service times, and whether the menu changes. Three or four lines. A reader who gets that block can decide whether to keep scrolling, and a reader who does not has to reverse-engineer it from dish names.
Sections, and how many is too many
Use the fewest sections that still make sense to someone who has never eaten there. Small plates, larger plates, sides, desserts is often enough. A menu carved into nine boutique category names may be charming on paper, but on a phone it turns into a long list of headings the reader has to parse before finding food.
Each section should be a real heading in the page, not bold text styled to look like one. Real headings are what let a screen reader jump between sections, what let a browser’s find-in-page work sensibly, and what give search engines the structure of the menu rather than a wall of text.
What one dish entry should contain
A dish entry has three parts and rarely needs a fourth:
- The name, exactly as the kitchen writes it on the pass.
- The description, one line naming the components that matter.
- The price, as plain text in the same line or directly beneath it.
Anything else, such as a dietary marker or a small-plate note, sits with those three rather than in a separate legend the reader has to scroll back to. Avoid dotted leader lines running from the dish name to the price. They are a print convention, and on a narrow screen they either wrap awkwardly or collapse into visual noise.
Photographs on the menu page
Photograph a few dishes rather than all of them, and only when the photo is genuinely good. A menu page with four strong images of signature dishes reads as confident. The same page with thirty mediocre ones reads as a catalog and loads slowly, which brings back the speed problem the PDF had. Photos also need real alternative text describing the dish, not a filename, for the same accessibility reasons that rule out flattened images of the whole menu.
Writing dish names and descriptions
Describe what is in the dish, in the order a diner would notice it. That is nearly the whole rule. The protein or the center of the plate first, then the two or three components that define it, then the technique if it genuinely changes what arrives.
A description exists to answer a question the name leaves open. If the name already answers it, the description can be very short or absent. “Cacio e pepe” needs less explanation than “The Garden Board”, which needs to say what is actually on the board.
The adjectives worth keeping
Keep the words that carry information. Smoked, cured, charred, braised, raw, fermented, whipped: each of these tells a reader something about what they will taste. Drop the words that only signal enthusiasm. Delicious, mouthwatering, amazing and legendary describe the writer’s feelings rather than the plate, and a reader deciding between three restaurants discounts them automatically.
Naming for the people searching for it
There is a quiet search benefit to writing plainly. Someone searching for a specific dish in a specific area is typing the ordinary name of that dish. If the menu page calls it something clever and never says the ordinary word anywhere, the page cannot answer that search. The honest fix is not keyword stuffing; it is writing one clear line of description that happens to use the words a normal person would use. This is the same principle underneath our restaurant SEO work, applied at the level of a single dish.
Keep the voice consistent
A menu written by three people over two years reads like it. Decide once whether descriptions are sentence case or title case, whether they end in a full stop, whether ingredients are separated by commas, and whether the kitchen uses “and” or an ampersand. Write the decision down somewhere the next person will find it. Consistency here is invisible when it is right and distracting when it is wrong.
Prices, and what to do when they change
Show the current price as plain text, in the same format the restaurant uses on the card, next to the dish it belongs to. No images of prices, no price ranges standing in for real numbers, no “market price” unless the price genuinely changes with the market.
When something is priced daily, say that in words. “Priced daily, please ask your server” is honest and readable. A number that was correct in March and is wrong in September is worse than no number, because it sets an expectation the room then has to walk back at the table.
Handling a price increase without drama
Price changes are a normal part of running a kitchen, and the website should make them boring. A workable approach:
- Change the price on the website the same day the kitchen changes it, not at the end of the month.
- Change every place that price appears, including any set menu page, any events page and the Google Business Profile menu.
- Do not annotate the change on the page. A menu that draws attention to a price rise invites a conversation nobody wanted to have.
- Keep a short internal log of what changed and when, so the next person can tell whether the page is current.
Service charges, minimums and other numbers
Anything that affects what a guest pays belongs somewhere obvious, not only on the printed bill. Discretionary service charges, large-party policies, minimum spends for certain tables and card-only payment are all better read before arrival than discovered afterwards. Put them in a short, plainly worded block at the end of the menu page. Neighborhood rooms in particular build repeat custom on this kind of straightforwardness, which is why our page for neighborhood bistros treats it as part of the menu rather than fine print.
Allergen and dietary labelling, done honestly
Allergen and dietary information is the kitchen’s responsibility, and the website’s only job is to display exactly what the kitchen has confirmed. That distinction matters. We build and manage websites; we are not a kitchen, a caterer or a food safety authority, and no page we build can verify what happens on a line during service. Rules on what must be declared and how vary by country and locality, so the restaurant’s own compliance advice governs what appears on the page.
With that boundary clear, there is a lot a well-built page can do.
Labels that mean something
Use a small, fixed set of markers and define each one in plain words on the page itself. Vegetarian, vegan, and “contains nuts” are more useful than an unexplained grid of icons. If icons are used, they need text alternatives so they are readable by screen reader and understandable to someone who has not memorised the legend.
Place the marker with the dish, not in a distant key. A reader scanning for vegan options on a phone should be able to see the marker in the same glance as the dish name.
Say what the page cannot promise
Every menu page carrying dietary labels should also carry one short, honest sentence: that guests with allergies or intolerances should speak to staff before ordering, because preparation happens in a shared kitchen. That sentence is not a disclaimer bolted on by lawyers. It is the accurate description of how a restaurant kitchen works, and it protects both the guest and the room.
Keep the labels under review
Labels drift when a supplier changes, a recipe is tweaked, or a dish is rebuilt around what came in that week. Build a review of the labels into the same routine that reviews prices, and have the kitchen sign off rather than the person editing the page. This is the one part of the menu page where “probably still right” is not good enough.
Seasonal menus, daily specials and multiple menus
Separate what changes often from what does not, and structure the page so the volatile parts can be edited alone. A menu page that has to be rebuilt every time the fish changes will not get updated; one where a single dated block is swapped out in two minutes will.
Daily and weekly changes
Give the changing section its own heading and its own visible date, such as “Today’s specials” with the date shown next to it. The date is doing real work: it tells a reader whether they are looking at today’s list or a forgotten one from last Tuesday. If nobody is going to update it daily, do not publish a daily block at all. An out-of-date specials list costs more trust than an absent one.
Seasonal turnover
A kitchen that changes its menu with the seasons has an advantage worth using: each new menu is a reason for the page to be genuinely current, and a reason for regulars to check the site. Retire dishes cleanly rather than leaving them listed with a note. If a dish is famous enough that people ask after it, mention it in prose elsewhere on the site rather than leaving a ghost entry on the live menu.
Running more than one menu
Most rooms run several: brunch, dinner, bar snacks, a wine and cocktail list, and a set menu for groups. The question is whether these live on one page or several.
The practical rule is that a menu gets its own page when someone might search for it on its own, or link to it on its own. Brunch and set menus usually clear that bar. Bar snacks served alongside dinner usually do not. Whatever the split, every menu should be reachable from every other with a clear, consistent switcher, and the service times for each should be stated on the menu itself rather than only on the hours page. An all-day room switching between breakfast and dinner service has the most to gain from getting this right, which is why our page for brunch and all-day cafes treats menu switching as a core part of the build rather than an afterthought.
A wine list deserves a note of its own. It is usually long, often changes by the bottle, and is frequently the thing a guest wants to read before booking. Treat it as a real menu page with proper sections by style or region, not as a scanned image of a leather-bound list.
Connecting the menu page to a table
The menu page is where the decision gets made, so it is where the booking link belongs. A reader who has just finished reading the mains and decided yes should not have to navigate back to the homepage to act on it.
In practice that means a reservation or waitlist link in the header, exactly as on every other page, and a second one at the natural end of the menu content. It should say something concrete about what happens next rather than a generic label. If the room takes walk-ins only, say that in the same position, plainly, so the reader is not left hunting for a booking button that does not exist.
Two smaller details make a measurable difference to whether that link gets used. First, the link should open the actual booking step rather than a general contact page. Second, if the restaurant uses a booking tool that can accept a party size or a date, pass those through rather than dropping the reader at a blank form. Our reservation integration work covers how that hand-off is wired for the common booking tools, and the wider path from search result to seated table is walked through in our restaurant website playbook.
Keeping the website menu and the Google Business Profile in step
Many people will see the map listing before they ever reach the website, so the menu shown there has to agree with the menu on the site. Google Business Profile Help documents how to add or edit menu details on the listing, and that page is worth bookmarking for whoever owns the update routine.
Disagreement between the two is the problem, more than any individual error. A dish priced one way on the listing and another on the site tells a reader that nobody is minding either, and that impression carries over to everything else they are being asked to trust, including whether the stated opening hours are real. The fix is procedural rather than technical: the listing gets reviewed in the same sitting as the website menu, every time, and the review is somebody’s named job. Our Google Business Profile service folds that review into the same routine that handles hours and photos.
Structured data for menus
Structured data lets a search engine read the menu as a menu instead of guessing from paragraphs of text. The vocabulary for this is published at schema.org, which defines a Menu type along with menu sections and individual menu items, and Google’s Local Business structured data documentation describes how a restaurant’s core details, including a link to its menu, should be marked up on the page.
Two rules keep this useful rather than risky. First, the structured data must describe what is actually visible on the page. Marking up dishes that a human reader cannot see is the kind of mismatch search engines are explicitly built to catch. Second, it should be generated from the same source as the visible menu rather than maintained separately by hand, or it will drift within a month and quietly start describing a menu that no longer exists.
When the menu content lives in structured entries rather than a block of free text, both of those rules come for free: the page renders from the entries, the markup is generated from the same entries, and one edit updates both. That is the main structural argument for building a menu as data rather than as a page of typed text, and it is how our restaurant website builds handle menus by default.
The update workflow that keeps it current
A menu page stays current when updating it takes minutes and belongs to a named person. Everything above is undone by a workflow where the only way to change a price is to email an agency and wait three days.
A workable routine for a single room looks like this:
- The kitchen decides. A dish changes, a price moves, a special is on.
- One named person edits. Usually a manager, not the chef mid-service, and always the same role so nothing falls between two people.
- The change goes live the same week, ideally the same day. Daily specials go live before service.
- The Google Business Profile menu is checked in the same sitting.
- Allergen and dietary labels are confirmed by the kitchen whenever an ingredient or supplier has changed, not just when a dish is new.
- A monthly skim catches anything the day-to-day edits missed, such as a retired dish still listed on the set menu page.
The point of writing it down is that it survives staff turnover. A routine living in one manager’s head leaves with that manager, and the menu page begins its slow slide back toward being a stale file.
What to look for on the monthly skim
- Dishes listed that the kitchen no longer serves.
- Prices that differ between the menu page, any set menu page and the map listing.
- Specials or seasonal blocks carrying an old date.
- Dietary markers on a dish whose recipe has changed since the last review.
- Booking links that still point at a previous reservation tool.
Details of what an ongoing managed plan covers each month, including revisions of exactly this kind, are set out tier by tier on our pricing page.
The next step
Open the restaurant’s menu on a phone, on mobile data, standing outside the building. If the first thing that happens is a download, or a pinch to zoom, or a price that is no longer true, the format is the problem and no amount of rewriting the descriptions will fix it.
The concrete next step is to move the menu off whatever file it currently lives in and rebuild it as a page, with sections, dish entries, real prices and a named person who owns updating it. If you would rather see that done on your own menu than plan it from scratch, book a demo and we will walk through your current menu page on screen and show you what it looks like rebuilt.
Sources
Frequently asked questions
Should a restaurant menu be a PDF or a web page?
A web page, in almost every case. A PDF cannot reflow to fit a phone screen, is harder for assistive technology to read reliably, and has to be exported and re-uploaded every time a single price changes. A menu built as an ordinary page can be linked to, searched, updated in minutes and read comfortably on any screen size.
How should dish prices be shown on a restaurant website?
Show the current price as plain text next to each dish, in the same currency and format used on the printed menu. Avoid dotted leader lines that break on narrow screens, and avoid burying prices in an image. If a dish is priced daily, such as market fish, say so in words rather than showing a number that will be wrong by the weekend.
How do you handle a menu that changes every day?
Separate the parts that rarely change from the parts that change constantly, and structure the page so only the volatile section needs editing. Keep the fixed sections as normal menu entries, and give the daily list its own clearly dated block that one person updates as part of the opening routine. A visible last-updated date tells readers whether what they are looking at is today's menu.
Does the website menu need to match the Google Business Profile menu?
Yes, because many people see the profile before they ever reach the website. Google Business Profile Help documents how to add or edit menu details on the listing, and those details should be reviewed in the same sitting as any website menu change. When the two disagree on a price or a dish, the mismatch reads to a customer as carelessness.
Who is responsible for allergen and dietary information on a restaurant website?
The restaurant and its kitchen, always. A website can display exactly the labels the kitchen has confirmed and can make them easy to read, but it is not a food safety authority and cannot verify what happens on the line. The page should say plainly that guests with allergies need to speak to staff, and the labels on it should be reviewed by the kitchen whenever a recipe or supplier changes.