Restaurant menu SEO: how to make every dish you sell findable
Your menu is the densest, most search-relevant document your restaurant will ever produce — sixty to ninety dish names, ingredients, prices, dietary markers, all of it describing exactly what people are searching for. Most restaurants have saved it as a picture. This guide explains what that costs, what to do instead, and how to do it without hiring anyone if you would rather not.
An illustration, not a live crawl — but the failure modes shown are the real ones. The identical menu, in three formats, produces three completely different amounts of machine-readable information.
What is restaurant menu SEO?
Restaurant menu SEO is the practice of publishing your menu as readable text on your own website, structured so search engines and AI assistants can identify each dish, its description, its price and its dietary attributes. In practice that means an HTML page rather than a PDF or photograph, organized with real headings and sections, supported by Menu structured data. The purpose is to make every item you sell into a phrase your restaurant can be found for — particularly in dish-level searches, which carry the highest purchase intent in the category.
Here is the arithmetic that makes this the highest-leverage change most restaurants can make. A typical independent restaurant sells somewhere between sixty and ninety distinct items. Each one has a name. Many have a regional or specific name that people search by — birria, khao soi, cacio e pepe, oxtail, shakshuka. Each has ingredients. Many carry a dietary attribute that somebody is specifically hunting for.
Published as text, all of that becomes findable. Published as a photograph, none of it does. There is no partial credit and no gradual penalty. The words are either words or they are pixels.
The cruel part is that this usually happens to restaurants that are trying hard. Somebody paid a designer for a beautiful menu. The designer delivered a PDF, because that is what designers deliver. Somebody uploaded it to the website because it looked exactly like the printed one. Every step was reasonable and the result is that the restaurant is invisible for its own signature dish.
What this guide covers
- What machines actually extract from photo, PDF and HTML menus — demonstrated above rather than asserted.
- The Google menu tool nuance that most advice gets wrong, including what it does and does not fix.
- A step-by-step build you can hand to whoever runs your website, or follow yourself.
- Copy-paste structured data for menus, sections, items, prices and dietary flags.
- Dish-level pages, when they are worth it and when they are keyword spam.
- Updating prices without losing what you built.
Would rather it was just done?
We convert menus to structured, indexable pages as a fixed-scope project — usually a few days, not a retainer. Call and describe your menu; we will tell you what it involves before quoting anything.
A menu is not a design asset that happens to be online. It is a database of everything you sell, and its format decides whether that database exists.
What an unreadable menu actually costs
Not in vague visibility terms. In specific, nameable searches you cannot appear for, and specific guests who leave.
Every dish-level search
Someone searching birria tacos near me has already decided what they want to eat. They are only choosing where. That is the highest-intent search in the restaurant category and it is decided almost entirely by menu text. If your dishes are pixels, you are not a candidate.
Dietary and allergen searches
A guest with celiac disease searching for genuinely gluten-free options is a high-loyalty repeat customer who brings a table with them. They filter by what they can verify before arriving. An unreadable menu makes verification impossible, so they choose the restaurant that told them.
Accurate AI recommendations
When an assistant builds a recommendation it needs something to say about each option. A restaurant with a readable menu supplies dishes, prices and dietary detail. A restaurant with a photographed menu supplies a name and an address, which is not enough to recommend confidently.
Guests who simply give up
A PDF on a phone means a download, a wait, then pinching and dragging around a page designed for paper. A meaningful share of people abandon it. You never hear about this because nobody emails a restaurant to report that they gave up on the menu.
Accessibility, and the exposure with it
A screen reader cannot read a photograph of a menu, and often handles an untagged PDF badly. Beyond excluding guests who want to spend money with you, restaurant website accessibility has been an active area of ADA litigation for years.
The ability to change a price
When the menu is an image, every price change is a design job. So prices drift out of date, guests arrive expecting last year's numbers, and the gap between your website and your reality becomes a service problem at the table.
Are image menus bad for SEO?
Yes, and more completely than most people assume. A photographed or fully designed image menu contains no text at all from a machine's point of view — the dish names are shapes. Search engines can run image recognition and sometimes guess at content, but they cannot reliably associate a dish with a price, a section, or a dietary attribute, and they will not confidently surface your restaurant for a dish they only think they saw. The fix is not better image quality. It is publishing the same content as text.
“But Google can generate a menu from my photo now”
True, and it is genuinely useful. It also does not solve the problem most people think it solves, and understanding why makes the whole picture clearer.
Google added an AI tool inside the Business Profile dashboard that takes an uploaded photo or PDF of your menu and converts it into a structured menu on your profile — item names, descriptions and prices, laid out properly. You find it under Edit menu → Photos of menu → Generate a menu, review what it produced, and publish.
You should absolutely use it. It is free, it takes minutes, and menu content on your profile helps Google match you to dish and cuisine queries in Search and Maps.
But notice exactly what happened there. Google could not use your menu until it had been converted into structured data. The company with the best document understanding in the world built a dedicated AI tool whose entire job is turning your picture into machine-readable fields, because the picture on its own was not usable. That is not an argument that format does not matter. It is the strongest possible confirmation that it does.
Three things the tool does not do
It does not fix your website. The structured menu lives on your Google Business Profile. The PDF on your own site is still a PDF, still unreadable, still contributing nothing to your own domain's ability to rank for dish searches.
It does not reach the other assistants. ChatGPT does not read your Google Business Profile menu. Neither does Perplexity. They read the open web — which means your website. Publishing the menu properly on your own domain is what makes it available everywhere rather than on one platform.
It is a one-way, manual sync. The extraction is experimental, historically limited to one image at a time, and it does not update itself when your menu changes. Every price change means repeating the process, on top of whatever you did on your own site.
The right way to use it: publish a proper HTML menu on your website as the source of truth, and populate the Google menu from the same content. Two surfaces, one set of facts, both readable.
Where your menu should exist
- Your own website, as HTML text — the source of truth, readable by every search engine and every AI assistant.
- Menu structured data on that page — so machines read fields rather than guessing from layout.
- The menu URL field on your Google profile — pointing at that page, not a PDF.
- The Google detailed menu — generated from the same content, published on the profile.
- Anywhere guests tap at the table — QR or NFC, both opening the same real page.
Should I still upload a menu photo to my Google profile?
Yes. Photos of the physical menu are useful to guests and give Google's tool something to work from. The mistake is treating the photo as your menu rather than as an image of it. Upload the photo, generate the detailed menu from it, and separately publish the real text version on your website. They serve different purposes and you want both.
One menu, published everywhere it needs to be
LinkRestaurants publishes digital restaurant menus as real indexable pages with structured data built in, with tap-to-open NFC or QR for the table. Update a price once and every surface reflects it.
Building a menu page that machines can read
Six steps. None of them require a redesign, and most can be done by whoever currently updates your website. If nobody currently updates your website, that is the actual problem and step six addresses it.
-
Put the menu on its own page, on your own domain
A dedicated URL like
/menu/rather than a section buried on the homepage, and definitely not a link out to a delivery marketplace. This gives you a page that can rank in its own right, that you can link to from your Google profile, and that you control completely.If you run several distinct menus — dinner, brunch, bar, catering — give each its own page. They serve different searches at different times of day and they will compete with each other if crammed together.
-
Type the menu as real text, with real headings
Each menu section becomes an actual heading in the page — Starters, Tacos, From the Grill, Desserts. Each dish is text: the name, a short description, the price. This is the entire technical requirement and it is genuinely as simple as it sounds.
Resist the temptation to reproduce the printed design exactly. The printed menu was laid out for a piece of paper held at a table. The web version is read on a phone by someone who may be standing outside deciding whether to come in. Clean, scannable, sectioned text beats a faithful reproduction every time.
-
Write descriptions that say what things actually are
“Chef's special preparation” is invisible. “Slow-braised beef shank with guajillo, served with consommé for dipping” contains half a dozen phrases people search for and tells a guest whether they want it.
Include the regional or traditional name alongside a plain-language description where they differ. Somebody searching khao soi and somebody searching Thai curry noodle soup are looking for the same bowl and should both find you. Write for the guest first; the search benefit follows automatically because guests and search engines want the same clarity.
-
Mark dietary attributes explicitly and honestly
Vegetarian, vegan, gluten-free, contains nuts, spicy. Use plain words on the page rather than a legend of symbols — symbols do not carry meaning to a machine and are frequently missed by guests too.
Be precise about what you can guarantee. “Made without gluten ingredients, prepared in a kitchen that handles flour” is more useful and far safer than a bare “gluten free” label. Guests with real allergies read that distinction carefully and trust the restaurant that made it.
-
Add Menu structured data
A block of JSON-LD in the page that states explicitly what a machine would otherwise have to infer: this is a menu, these are sections, this is an item, this is its price, this one suits a vegan diet. Full code in the next section.
Start light if the full version is daunting: adding
hasMenuto your Restaurant markup, pointing at the menu page URL, already helps considerably. Expand into item-level markup for signature and dietary-flagged dishes where it matters most. -
Make sure someone can update it in five minutes
This is the step that decides whether any of the previous five survive. If changing a price requires emailing an agency and waiting three days, the menu will drift out of date within a season and everything above becomes wrong information published very legibly.
Whoever runs your floor should be able to change a price, 86 an item, or add a special without asking permission. If your current setup does not allow that, fixing it is worth more than any optimization on this page.
Step six is where most restaurants get stuck
If nobody at your restaurant can edit the website, that is fixable and it is not expensive. Search Converts builds restaurant websites on static HTML, WordPress, Shopify or fully custom — including direct ordering apps that keep the commission in your business instead of a marketplace.
Menu structured data, with code you can copy
Structured data is invisible to your guests and decisive for machines. It removes every guess: this string is a dish, this number is a price, this item suits a vegan diet.
The lightweight version
If you do nothing else, do this. It tells search engines your restaurant has a menu and exactly where to find it, inside the Restaurant markup that should already exist on your site.
Note: schema.org superseded menu with hasMenu, but both function identically and Google's documentation still references either. Use a fully qualified URL.
Why bother with the detailed version
The lightweight version tells a machine where to look. The detailed version tells it what it will find, item by item, without having to parse a layout. That difference matters most for AI assistants building a recommendation, because it gives them individual dishes with prices and dietary flags they can quote directly rather than inferred from prose.
A reasonable middle path for most restaurants: light markup site-wide, plus detailed item markup for your signature dishes and anything carrying a dietary attribute. Those are the items most likely to be searched by name.
Does menu schema still work now that FAQ rich results are gone?
Yes, and the two are separate things. Google deprecated FAQ rich results in May 2026, so the expandable question boxes no longer appear in search results — but Google confirmed it still parses FAQPage markup to understand pages, and that markup is now primarily valuable for AI citation rather than SERP display. Menu structured data was never a FAQ feature and remains actively used. More broadly, the value of structured data has shifted from “earns a visual rich result” to “gives AI systems facts they can quote accurately,” which for restaurants is the more valuable of the two anyway.
The detailed version
Nested sections and items with prices and dietary flags. Trimmed here to two sections for readability — the pattern repeats for as many as you have.
Validate in Google's Rich Results Test and the Schema Markup Validator before publishing. Keep it to one JSON-LD block per page and strip comments.
Allergens: the honest limitation
Schema.org has no native allergen type as of 2026. suitableForDiet covers the diet-based cases — VeganDiet, VegetarianDiet, GlutenFreeDiet, HalalDiet, KosherDiet, LowLactoseDiet — but does not express shellfish, egg or tree nut. The established workaround is additionalProperty with a PropertyValue.
Whatever you mark up, the plain text on the page still has to say it. Structured data that contradicts or exceeds what a guest can read is against Google's policies and, far more importantly, is dangerous when the subject is allergens.
Will menu structured data get me a rich result?
Possibly, but that is no longer the main reason to do it. Google shows menu information in Search and Maps for many restaurants, largely drawn from Business Profile data and crawled menu pages. The more durable benefit in 2026 is accuracy in AI answers: when someone asks an assistant what you serve, whether you have vegan options, or what your tacos cost, structured data is what lets it answer correctly and confidently instead of vaguely or not at all. Treat rich results as a bonus and machine comprehension as the point.
Dish-level pages: when they work and when they are spam
A recurring piece of advice is to build a separate page for every dish. Sometimes that is genuinely powerful. Usually it produces sixty thin pages that help nobody.
The honest test
Ask whether you could write something substantial and true about the dish that would not fit on the menu page. Not padding — actual content a curious person would want.
For your signature item, frequently yes. The dish has a story: where the recipe came from, how long the braise takes, why you use that chili, what makes yours different from the version down the street. Photographs. What to order with it. That is a real page and it can rank for a real search.
For your side salad, no. There is nothing to say beyond what the menu line already says, and a page saying it again in more words is exactly the thin content Google has spent years demoting.
A workable rule: dedicated pages for the three to six dishes you are actually known for, plus any dish with genuine search demand in your area. Everything else lives on the menu page, which is entirely sufficient for it to be findable.
What belongs on a dish page
- The dish name as the page heading, plus regional or alternate names in the text
- What is actually in it and how it is made, in enough detail to be interesting
- Real photographs of your version, not stock imagery
- Price, availability, and whether it is seasonal or limited
- Dietary information stated precisely
- Links back to the full menu and to reservations or ordering
How do I rank for a specific dish in my city?
The requirements are ordinary and most restaurants miss the first one. The dish must appear as text on your website, ideally with a description containing the words people use for it. Your restaurant needs the ordinary local signals — a complete Google Business Profile, reviews, a correct address. It helps considerably if reviews or local coverage mention the dish by name, because that is independent corroboration rather than your own claim. And for competitive dishes in competitive cities, a dedicated page with real substance outperforms a menu line. Note the order: publishing the dish as text is the prerequisite, not the optimization.
The mistake to avoid
Building near-identical pages that swap one dish name — “Best Birria Tacos in Denver,” “Best Carnitas Tacos in Denver,” “Best Al Pastor Tacos in Denver” — with the same three paragraphs rearranged.
This pattern was mildly effective years ago and now reliably produces a set of pages that either rank for nothing or drag down the pages that would otherwise have ranked. If you cannot write genuinely different content for each, you do not want each.
QR menus, NFC tags, and what neither of them does
This comes up in almost every conversation, usually because a vendor has framed it as a search decision. It is not one, and being clear about that saves money.
Do NFC menus improve SEO compared to QR codes?
No. Both are simply methods of opening a web address at the table — one by camera, one by tap. Neither is read by a search engine and neither affects rankings in any way. What determines whether your menu is searchable is the destination they open. An NFC tag pointing at a PDF is exactly as invisible as a QR code pointing at the same PDF. Choose between them on guest experience and durability, and make the SEO decision separately, about the page.
QR codes
Works with: any phone camera, no app, universally understood since 2020.
Costs: effectively nothing. You can print them yourself.
Struggles with: dim rooms, glare on a laminated card, guests who need to find their camera app, and worn or scratched table tents. Also carries a slight association with cost-cutting for some diners.
Best for: casual rooms, patios, high-turnover service, anywhere you want the cheapest thing that works everywhere.
NFC tags
Works with: a tap, no camera, no app, no aiming. Reliable in low light where a code is hard to scan.
Costs: more than printing, but modest per table.
Struggles with: a small number of older devices, and guests who have not encountered it before and need a one-line prompt on the tag.
Best for: dim or upscale rooms, bar tops, anywhere the physical experience is part of what you are selling and a printed code would look cheap.
Vendors selling the tag as an SEO product are selling the wrong half of the solution. The tag is hardware. The page is the asset.
If you want both halves
LinkRestaurants provides NFC restaurant menus where the tag opens a real indexable page with structured data already in place — so the same asset serves the guest at the table and the search engines at the same time. Setup, tags, and unlimited menu changes are handled.
Changing your menu without losing what you built
Menus change constantly — seasons, costs, a cook who left with the recipe. The goal is a page that absorbs change rather than one that breaks every time you raise a price.
Keep the URL, change the contents
The single most common self-inflicted wound is changing the menu page's address. A restaurant moves from /menu/ to /fall-menu-2026/ and every link, every search ranking, and every reference built up over years now points at nothing.
Keep one stable URL per menu type. The dinner menu lives at /menu/ or /dinner-menu/ forever, and the contents change underneath it. If you genuinely must move a page, set up a 301 redirect from the old address to the new one so the accumulated value transfers.
Seasonal menus
Handle seasonality inside the permanent page rather than by creating and deleting pages. A section headed “Autumn additions” on the main menu page works better than an /autumn-menu/ page that gets deleted in November and takes its rankings with it.
The exception is a genuinely separate service — brunch, a tasting menu, catering. Those are permanent categories that deserve permanent pages, even if the dishes inside them rotate.
A maintenance rhythm that holds
- Same day: price changes and 86'd items. A wrong price on the website is a service problem waiting at the table.
- Weekly: specials and rotating items, if you publish them.
- Each season: full read-through for dishes you quietly stopped serving. These accumulate invisibly.
- Twice yearly: confirm the structured data still matches the visible menu, and that the Google profile menu has not drifted from the site.
Will changing my menu hurt my search rankings?
Changing the contents of a stable page will not. Search engines expect a restaurant menu to change and a page that updates regularly reads as a live business rather than an abandoned one. What does cause damage is changing the page's URL without a redirect, deleting pages that had accumulated value, or letting the page go untouched for years until it describes a restaurant that no longer exists. Update freely; just keep the address.
What is currently locked inside your menu?
A rough count of the searchable material sitting in a menu that machines cannot read. Not a traffic projection — a count of phrases that either exist in text or do not.
Menu content estimator
Two numbers, and how your menu is currently published.
Menu mistakes we find in nearly every audit
The menu links to a delivery marketplace
The website's menu button opens DoorDash. The restaurant has handed its most valuable content, and the order, to a platform charging commission. Publish your own menu and link ordering separately.
Prices removed “so we can change them”
Understandable and counterproductive. Price is one of the strongest filters diners apply, and a menu without prices reads as expensive or evasive. It also removes a field AI assistants use for budget-constrained queries. Publish prices and make them easy to edit.
Dietary information hidden in a symbol legend
A small V, GF or leaf next to a dish, explained in a footnote. Machines read none of it and a fair number of guests miss it too. Use words in the item description.
The menu opens in a viewer or lightbox
Some site builders display menus inside an embedded document viewer that loads content via script after the page renders. Guests can read it; crawlers frequently cannot. If your menu text does not appear when you view the page source, treat it as an image.
One page holding four different menus
Dinner, brunch, happy hour and catering stacked on a single page compete with each other and rank for none of them cleanly. Split them, link them to each other, and note the serving times on each.
Structured data that contradicts the page
Markup listing dishes or prices that are not visible to a guest. This is a policy violation that can earn a manual action, and it usually happens accidentally when the markup is not updated alongside the menu. Keep them in sync or keep the markup light.
Restaurant menu SEO questions
What is restaurant menu SEO?
Restaurant menu SEO is publishing your menu as readable text on your own website, structured so search engines and AI assistants can identify each dish, its description, its price and its dietary attributes. In practice that means an HTML page rather than a PDF or photograph, organized with real headings, supported by Menu structured data. The purpose is to make every item you sell into a phrase your restaurant can be found for, particularly in dish-level searches, which carry the highest purchase intent in the category.
Can Google read a PDF menu?
Poorly, and often not at all. Google can sometimes extract raw text from a PDF but cannot reliably interpret its structure — which line is a dish, which number is a price, which heading is a section, which item is vegetarian. A photographed or fully designed menu is worse, because the words are pixels rather than text. AI assistants hit exactly the same wall. Google's own AI menu tool exists specifically to convert these files into structured fields, which is the clearest evidence that the raw file is not usable on its own.
Are image menus bad for SEO?
Yes, and completely rather than partially. A photographed or designed image menu contains no text from a machine's point of view — the dish names are shapes. Search engines can attempt image recognition but will not confidently surface your restaurant for a dish they only think they saw, and they cannot associate that dish with a price, a section or a dietary attribute. The fix is not a higher-resolution image; it is publishing the same content as text.
How do I make my restaurant menu searchable on Google?
Put it on its own page on your own domain as real text, with each section as a heading and each dish written out with a description and a price. Add Menu structured data to the page. Point the menu URL field on your Google Business Profile at that page rather than a PDF. Then separately use Google's Edit menu tool to generate a detailed menu on the profile itself from a photo or PDF, so both surfaces carry the information. The website version is the one that reaches AI assistants and other search engines.
Does Google's AI menu generator fix my PDF problem?
Only on Google's own surface. The tool converts an uploaded photo or PDF into a structured menu displayed on your Google Business Profile, which is genuinely useful for Search and Maps. It does not change the PDF on your website, which remains unreadable, and it does not reach ChatGPT, Perplexity or other assistants that read the open web rather than your Google profile. Use it, but publish a proper HTML menu on your own site as the source of truth.
Do NFC menus improve SEO compared to QR codes?
No. Both are simply ways of opening a web address at the table, one by camera and one by tap. Neither is read by a search engine and neither affects rankings. What determines whether your menu is searchable is the destination: an NFC tag pointing at a PDF is exactly as invisible as a QR code pointing at the same PDF. Choose between them on guest experience — NFC suits dim or upscale rooms, QR is free and works on any camera — and make the SEO decision separately, about the page they open.
What structured data should a restaurant menu use?
At minimum, the hasMenu property on your Restaurant schema pointing at the menu page URL. Beyond that, the nested pattern is Menu, then hasMenuSection with MenuSection, then hasMenuItem with MenuItem, each item carrying a name, description and an Offer containing price and priceCurrency. Dietary attributes use suitableForDiet with values such as VeganDiet, VegetarianDiet or GlutenFreeDiet. Schema.org has no native allergen type as of 2026, so specific allergens are typically expressed with additionalProperty. Validate everything in Google's Rich Results Test before publishing.
Should I create a separate page for every dish?
No. Build dedicated pages only for dishes you can write something substantial and true about — usually your three to six signature items, plus anything with real search demand locally. A page for your side salad has nothing to say that the menu line does not, and sixty near-identical pages that swap one dish name is the thin-content pattern Google has spent years demoting. Everything else belongs on the menu page, which is entirely sufficient for those dishes to be findable.
Should I put prices on my online menu?
Yes. Price is one of the strongest filters diners apply, and a menu without prices reads as either expensive or evasive — many people will skip you rather than call to ask. It also removes a field AI assistants rely on when someone asks for somewhere under a certain budget. The usual objection is that prices change, which is really an argument for a menu you can edit in five minutes rather than an argument against publishing them.
Will changing my menu hurt my rankings?
Changing the contents of a stable page will not — search engines expect a restaurant menu to change, and a regularly updated page reads as a live business. What causes damage is changing the page's URL without a 301 redirect, deleting seasonal pages that had accumulated value, or leaving the page untouched for years until it describes a restaurant that no longer exists. Keep one permanent URL per menu type and change what sits underneath it freely.
How long does it take to see results from fixing a menu?
The page itself typically begins being crawled and reflected within two to six weeks. Dish-level searches often move first because there is usually little competition for them — you may be the only restaurant in your area that has actually published a given dish as text. Broader cuisine and category terms take longer and depend on the rest of your local signals. AI assistant accuracy tends to improve as the page is recrawled and corroborated elsewhere, but that timing is not predictable.
Can I do this myself or do I need a developer?
Typing the menu as text on a page is something most people can do in whatever system already runs the website — it is ordinary content editing, not development. The structured data is a block of code that needs to be pasted into the page correctly, which is straightforward for anyone comfortable with HTML and awkward for anyone who is not. The realistic split is that you can do the content and may want help with the markup, or with the underlying problem if your site is one nobody at the restaurant can edit at all.
Menus are the fastest fix we do
Of everything covered across this site, menu conversion is the change with the shortest path between doing it and seeing something happen. It is a fixed-scope project rather than a retainer, it usually takes days, and afterwards you own an asset that works on every surface at once.
Call and describe your menu — how many items, where it currently lives, who can edit your website. We will tell you what is involved and roughly what it costs before anyone quotes anything. If the answer is that you can do it yourself with this guide, we will tell you that too.
Related reading
- The complete restaurant SEO guide — the overview this page sits inside, covering all nine surfaces where diners search.
- AI search visibility — how assistants choose which restaurants to name, and why menu data feeds it.
- Google Maps visibility — the profile side, including the menu fields on your listing.
- Statistics and benchmarks — the sourced data behind the figures quoted here.
- Restaurant website design — if the underlying site is the obstacle.
- Marketing for restaurants — the paid side, once the foundation is readable.