Pharelio

LocalBusiness schema generator: your markup in two minutes

Fill in the form, copy the code. Google finally knows who you are, where you are, and which Google Maps listing you are.

No sign-up
Nothing is sent to our servers
Valid Rich Results output
1

The essentials

A name and an activity are enough to produce valid markup.

Sets the Schema.org type emitted. A precise type always beats the generic LocalBusiness.

Write it exactly as it appears on your Google listing and your storefront.

2

Where you operate

An address if customers come to you, towns and cities if you travel to them.

How do customers reach you?

Two-letter country code.

3

Your links

The link to your Google Maps listing is the clearest thread you can tie between your website and your business.

Open your listing on Google Maps, click Share, then copy the link.

4

Opening hours

Optional, but these hours can show up directly in search results.

0

Markup completeness

Valid from the name alone. Every extra field is one less thing Google has to guess.

Your markup

Updated on every keystroke

Enter your business name

The code will appear here, ready to copy.

Test it with Google

Everything runs in your browser. None of this is sent to us.

What is LocalBusiness schema?

LocalBusiness schema is a Schema.org vocabulary that describes a physical business in machine-readable form: its type of activity, name, address, phone number, opening hours and the profiles that talk about it elsewhere on the web. You add it to a page as a JSON-LD block, the format Google has recommended since 2015.

Without that markup, Google has to infer those facts from your layout: a number in a footer, an address broken across three lines, opening hours inside an image. It often manages, but not always, and never reliably. LocalBusiness schema removes the guesswork.

It is also the only place where you can state outright that your website and your Google Business Profile listing describe the same company, through the sameAs property.

LocalBusiness schema properties

They are not equally useful. These are the ones that matter, in the order Google puts them to work.

Essential

Without them the block is ignored or unusable.

@context
States that the vocabulary in use is Schema.org.
@type
The kind of business. Always prefer the most precise type (Restaurant, Plumber, HairSalon) over the generic LocalBusiness.
name
The trading name, written exactly as it appears on your storefront and your Google listing.

Strongly recommended

These are what make the markup pay off in local search.

address
The full postal address, split into street, postal code, city, region and country.
telephone
The number in international format, identical to the one on your Google listing.
url
The address of the business's official website.
sameAs
The other pages that represent the same company, starting with your Google Maps listing.

Depending on your business

Fill them in when they apply, leave them out otherwise.

openingHoursSpecification
Opening hours, day by day. They can show up directly in search results.
geo
GPS coordinates, useful when the address alone is ambiguous.
areaServed
The towns you serve, for a business that travels and has no address open to the public.
priceRange
The price range, which Google expects for restaurants and hotels.
image
A photo or logo that represents the business.

LocalBusiness schema examples

Two cases that cover most local businesses. Both are produced by the generator above: what you copy will have exactly this shape.

Business with an address and opening hours

The most common case: premises open to the public. Note the openingHoursSpecification block and the sameAs pointing at the Google Maps listing.

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Market Street Kitchen",
"url": "https://www.marketstreetkitchen.com",
"description": "Seasonal cooking, produce sourced from growers in the county.",
"telephone": "+1 415 555 0132",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Market Street",
"addressLocality": "San Francisco",
"postalCode": "94103",
"addressRegion": "California",
"addressCountry": "US"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Tuesday",
"opens": "12:00",
"closes": "14:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Wednesday",
"opens": "12:00",
"closes": "14:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Thursday",
"opens": "12:00",
"closes": "14:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "12:00",
"closes": "22:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "12:00",
"closes": "22:30"
}
],
"sameAs": [
"https://maps.app.goo.gl/aBcDeFgHiJkLmN"
]
}
</script>

Tradesperson with a service area

No address open to the public: areaServed carries the geography instead. Declaring an address here would be wrong, and Google penalises it.

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Dawson Plumbing",
"url": "https://www.dawsonplumbing.com",
"description": "Emergency repairs and bathroom installation, on site within two hours.",
"telephone": "+1 415 555 0177",
"areaServed": [
{
"@type": "City",
"name": "San Francisco"
},
{
"@type": "City",
"name": "Oakland"
},
{
"@type": "City",
"name": "Berkeley"
}
],
"sameAs": [
"https://maps.app.goo.gl/aBcDeFgHiJkLmN"
]
}
</script>

Add your LocalBusiness schema code

Three minutes, once. The markup then works for every visit that follows.

1

Copy the block

The Copy button puts the whole block on your clipboard, tag included.

2

Paste it into your page

In the source of your homepage, just before the head section closes. On WordPress, a custom-code plugin or the field your theme provides will do.

3

Check it with Google

Run your page URL through Google's Rich Results Test. It will tell you what it read, and what it failed to understand.

LocalBusiness schema checker: validate your markup

Markup nobody can see is markup that does not exist. Two official validators, both free, to run once the code is live.

Google Rich Results Test

Google's own tool. It reads your page the way Googlebot does and flags missing or malformed properties. This is the one that counts.

Open Google's test

Schema Markup Validator

The Schema.org validator. Stricter and more thorough on syntax, but silent on what Google actually uses. Useful alongside the first.

Open the validator

If the test sees nothing, the block is probably absent from the served HTML: check that it is not injected by a script that loads afterwards.

LocalBusiness or Organization schema?

Organization describes a company as a legal entity or a brand. LocalBusiness is a subclass of it: it adds everything to do with place, from opening hours to the area served. If customers come to you somewhere, or you travel to them, LocalBusiness is what you want.

The common mistake is declaring both on the same page, which hands Google two competing entities for one company. One page, one block. A chain with several outlets, on the other hand, declares one LocalBusiness per location page, each with its own address.

Frequently asked questions

What is LocalBusiness markup for?

It states in machine-readable form what your page says in plain English: your name, address, opening hours and phone number. Google no longer has to infer them from your layout, and can tie your site to your business rather than to a namesake.

Will it push me up the rankings?

Markup is not a ranking factor in itself. It removes ambiguity, and ambiguity is what costs you in local search: two conflicting addresses, a name written three different ways, no link at all between the site and the Google listing.

Why insist so much on the Google Maps link?

That is the sameAs field. It states outright that the Google Maps listing and the website describe the same business. Across the local business sites we measured, almost none fill it in, even though it is the most direct link there is between a web page and an entity.

Is my data stored anywhere?

No. Everything is computed in your browser, nothing is sent or kept. Close the tab and nothing remains.

Should I put it on every page?

Once is enough, on the page that presents the business, usually the homepage or the contact page. Repeating it everywhere adds nothing and multiplies the chances of contradicting yourself.

What if my opening hours change?

Come back to this generator and replace the block. Markup that contradicts your Google listing is worse than no markup: it hands Google two versions to choose between.

The other free tools

No sign-up, and nothing sent to our servers.

Markup settles one ambiguity. Your Google listing usually has eight.

Pharelio audits your Google Business Profile, scores what is missing and fixes it with you: photos, hours, categories, reviews left unanswered.

Audit my Google listing

14-day trial, no credit card