Skip to content
Restaurants

Why Your Restaurant Website Doesn't Rank on Google (And What to Fix First)

Rankxi · 15 January 2026 · Restaurants

You have a website. Your competitor across the street also has a website. But when someone types “Italian restaurant near me” into Google at 7pm on a Friday night, they find your competitor — not you.

This is not a mystery. It is not bad luck. It is the result of four specific, fixable problems that affect the vast majority of independent restaurant websites.

Here is what those problems are, and what you need to do about each one.


Reason 1: No Local Schema Markup

Schema markup is structured data you add to your website that tells Google exactly what your business is, where it is, what it serves, and when it is open. Without it, Google reads your site the same way it reads any generic web page — with little context about what you actually do.

For restaurants, the relevant schema type is Restaurant (a subtype of LocalBusiness). It looks like this in your HTML:

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Osteria del Borgo",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Rue de la Paix",
    "addressLocality": "Lyon",
    "postalCode": "69006",
    "addressCountry": "FR"
  },
  "telephone": "+33 4 XX XX XX XX",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Tuesday", "Wednesday", "Thursday"],
      "opens": "19:00",
      "closes": "22:30"
    }
  ],
  "servesCuisine": "Italian",
  "priceRange": "€€",
  "url": "https://osteriadelborgolyon.fr"
}

This tells Google: this is a restaurant, serving Italian food, located at this address, open on these days, at this price range.

Without this, Google has to guess. And when Google guesses, you lose to competitors who have made it explicit.

How to add it: Place this JSON-LD block inside a <script type="application/ld+json"> tag in your page <head>. Google’s Rich Results Test will confirm it is reading correctly. You should add schema to every page that has location-specific information.


Reason 2: Core Web Vitals Score Below 50

Google has made page speed a direct ranking factor, and for good reason. A slow website means users leave before they even see your menu. And when they leave, Google notices.

Core Web Vitals are three metrics Google uses to measure real-world page experience:

LCP (Largest Contentful Paint) measures how long it takes for the main content of a page to become visible. For a restaurant site, this is typically your hero image or menu heading. Google wants this under 2.5 seconds. If you have a large, uncompressed photo as your hero image, you are almost certainly failing this metric.

CLS (Cumulative Layout Shift) measures how much your page jumps around while loading. If fonts load late and cause text to shift, or if images without defined dimensions push content down, your CLS score is poor. This is annoying for users and penalised by Google.

INP (Interaction to Next Paint) measures how responsive your page is when users interact with it. Click a button — how long does it take to respond? Anything over 200 milliseconds is a problem.

To check your current scores, go to PageSpeed Insights and enter your URL. A score below 50 on mobile means you have serious work to do. Most restaurant websites built on Wix, Squarespace, or old WordPress themes score between 30 and 55.

How to fix it: The most impactful changes are compressing images (use WebP format and keep hero images under 200KB), removing unused JavaScript, and hosting on a CDN (content delivery network) rather than a basic shared hosting plan. If you are on Wix, these fixes are often impossible without migrating to a better platform.

A restaurant website with a mobile PageSpeed score of 90+ consistently outranks comparable restaurants with scores in the 40s, all else being equal.


Reason 3: Menu Content With Zero Search Intent

Most restaurant menus on websites are written like this:

  • Tagliatelle al Ragù — €14
  • Risotto ai Funghi Porcini — €16
  • Tiramisù — €7

This content is correct and useful for people already on your site. But it does nothing for Google. No one searches for “Tagliatelle al Ragù.” They search for “best pasta restaurant Lyon” or “Italian restaurant with homemade pasta near me.”

The mistake is writing menu content for guests who are already seated, not for people who are searching for where to eat. These are two completely different audiences, and your website needs to speak to both.

How to fix it: Add context to your menu. Instead of just listing “Tagliatelle al Ragù,” write a short description: “Hand-rolled tagliatelle with slow-cooked beef ragù, a house speciality we have served for 12 years.” This language naturally includes searchable terms.

More importantly, add a page or section specifically targeting local search intent. A paragraph that reads: “Osteria del Borgo is an independent Italian restaurant in Lyon’s 6th arrondissement, known for its handmade pasta and traditional Roman recipes. We have been serving the neighbourhood since 2012.” — this is the kind of text Google uses to understand who you are and where you rank.

Create a dedicated page for each type of cuisine or speciality you are known for, written to match how people actually search. “Homemade pasta restaurant Lyon 6” is a real search term with real volume. Rank for it.

Also: never put your menu in a PDF. Google cannot read PDFs the same way it reads HTML. Every dish, every description, every category should be text on the page.


Reason 4: No Google Business Profile Linked to Your Site

Google Maps results — the “pack” of 3 businesses that appears at the top of a local search — is powered almost entirely by Google Business Profile (GBP), not by your website alone. But your website and your GBP need to be connected correctly for either to perform well.

The most common mistake is NAP inconsistency. NAP stands for Name, Address, Phone — the three core pieces of identifying information about your business. If your website says “12 Rue de la Paix” but your GBP says “12, Rue de la Paix” (with a comma), that inconsistency sends a weak signal to Google. If your phone number on your site is different from the one on your GBP, that also weakens your local authority.

Google uses these signals to verify that your business is real, established, and trustworthy. The more consistent your information is across your website, your GBP, and other directories (TripAdvisor, Yelp, TheFork), the higher you rank in the Maps pack.

How to fix it:

First, claim and complete your Google Business Profile at business.google.com. Make sure every field is filled in: name, address, phone, website URL, opening hours, photos, categories.

Second, ensure your website links to your GBP and vice versa. Your GBP should list your correct website URL. Your website’s footer or contact page should include your full address and phone number in plain text (not as an image).

Third, use the schema markup from Reason 1 — the LocalBusiness schema includes your NAP data in a machine-readable format, reinforcing the same information you have on your GBP.

Finally, ask satisfied customers to leave Google reviews. Reviews are a direct ranking signal for the Maps pack. A restaurant with 40 reviews ranking at 4.3 stars will consistently outrank a restaurant with 8 reviews at 4.8 stars.


Where to Start

If you read this and your first thought was “we have none of this,” do not try to fix everything at once.

Start with schema markup and your Google Business Profile — these are the two highest-leverage changes you can make in the shortest time, with no impact on your website’s design or code structure.

Then tackle page speed. If your site scores below 60 on mobile PageSpeed, you are losing ranking positions every day. This often requires migrating away from a slow platform, which is a bigger project — but the long-term gain in both rankings and conversions is significant.

Finally, rewrite your menu content and add location-specific copy. This is a sustained effort, but it compounds over time. Every sentence that matches a real search query is another entry point into your site.

The restaurants that consistently rank on the first page of local Google searches are not doing anything magical. They have fast sites, consistent business information, structured data, and content that speaks to what their customers actually search for. Each of those four things is achievable in a matter of weeks, not months.

If you want to know where your site currently stands on each of these points, book a free audit. We will check all four before the call.

Want a site like this for your business?

Book a free audit and find out exactly what a high-performance website could do for your business.

Book a call →