Schema Markup Generator

Free tool · No signup

Local Business Schema Generator

LocalBusiness markup describes a business people can visit or call: its address, opening hours, phone number and location on a map. Use the most specific subtype that fits, such as Dentist, Restaurant or Plumber.

Required by Google

A photo of the business, such as the storefront or interior.

A short range such as $$ or $10–30. Keep it under 100 characters.

Two-letter ISO code, such as US, GB or PK.

At least 5 decimal places. Right-click the location in Google Maps to copy it.

Opening hours
  1. opening hours 1

  2. opening hours 2

Social and profile links

Profiles that are clearly the same entity: LinkedIn, X, Facebook, Instagram, GitHub, Wikipedia.

JSON-LD

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Bakery",
  "name": "Example Bakery",
  "url": "https://www.example.com/",
  "image": "https://www.example.com/storefront.jpg",
  "telephone": "+1 555 010 0199",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Market Street",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 39.78172,
    "longitude": -89.65015
  },
  "servesCuisine": "Bakery, Coffee",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "07:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "opens": "08:00",
      "closes": "14:00"
    }
  ],
  "sameAs": [
    "https://www.instagram.com/examplebakery"
  ]
}
</script>

Valid LocalBusiness markup

In the Rich Results Test, choose Code and paste. Your data stays in this browser: nothing is sent to a server.

Search preview · approximate

example.com

Example Bakery

12 Market Street, Springfield, IL

+1 555 010 0199 · $$ · 07:00–18:00

Google can use it for business details in search and Maps, alongside your Google Business Profile, which matters more for local rankings. Google's gallery

What Google can show

Google can use it for business details in search and Maps, alongside your Google Business Profile, which matters more for local rankings.

Required and recommended properties

Google needs these for Local Business markup to be valid:

RequiredNotes
Business name
Street address
City
RecommendedNotes
Website URL
Photo URLA photo of the business, such as the storefront or interior.
Phone
Price rangeA short range such as $$ or $10–30. Keep it under 100 characters.
State / region
Postal code
Country codeTwo-letter ISO code, such as US, GB or PK.
LatitudeAt least 5 decimal places. Right-click the location in Google Maps to copy it.
Longitude
Opening hoursDays, Opens, Closes
Social and profile linksProfiles that are clearly the same entity: LinkedIn, X, Facebook, Instagram, GitHub, Wikipedia.

A complete example

The example values in the generator above produce this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Bakery",
  "name": "Example Bakery",
  "url": "https://www.example.com/",
  "image": "https://www.example.com/storefront.jpg",
  "telephone": "+1 555 010 0199",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Market Street",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 39.78172,
    "longitude": -89.65015
  },
  "servesCuisine": "Bakery, Coffee",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "07:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "opens": "08:00",
      "closes": "14:00"
    }
  ],
  "sameAs": [
    "https://www.instagram.com/examplebakery"
  ]
}
</script>

Where to paste the code

  • WordPress: check what your SEO plugin (Yoast, Rank Math) already outputs, then add the block with a header-code plugin such as WPCode, or in your child theme's header.php before </head>. For one page only, use a Custom HTML block in that page.
  • Shopify: for site-wide markup such as Organization, go to Online Store › Themes › Edit code and paste it in theme.liquid before </head>. For products, edit the product section (often main-product.liquid) and use Liquid variables such as {{ product.title | json }} so every product gets its own values. Most themes already output basic Product markup.
  • Next.js: render it in the page component as <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(data).replace(/</g, "\\u003c") }} />. Escaping < stops a value from closing the script tag early; this site does the same.
  • Webflow: Page settings › Custom code › Inside <head> tag. For CMS collection pages, add it to the template's page settings and insert fields from the collection.

Test before you publish

Paste the code into Google's Rich Results Test, then test the live page once it's published. Make sure every value matches what people see on the page.

By Muhammad Saif · Updated

Questions

Does LocalBusiness schema help local SEO?

It helps search engines read your name, address, phone and hours correctly, which supports local results. Your Google Business Profile, reviews and consistent listings matter more for map rankings, so treat schema as one part of local SEO, not a shortcut.

Which business type should I choose?

The most specific one that's true: Dentist rather than MedicalBusiness, Plumber rather than HomeAndConstructionBusiness. If nothing fits, LocalBusiness is fine.

How do I mark up a business with several locations?

Give each location its own page with its own LocalBusiness markup, address, phone and hours. Don't list every branch on one page's markup.

Does schema markup improve rankings?

Not directly. Google has said structured data isn't a general ranking factor. It makes pages eligible for rich results, such as review stars, prices and breadcrumbs, which can make a result stand out and earn more clicks.

JSON-LD or Microdata?

JSON-LD. Google recommends it because it sits in one script block, separate from your HTML, so it's easier to add and maintain. Microdata and RDFa still work but are woven into the markup.