Local Business Schema Generator
Build LocalBusiness JSON-LD from a form: a specific business type, a full address, opening hours with split shifts, and the optional extras. Every field is checked as you type, in plain English, against what Google's Search Central page marks as required and recommended. Then copy it or download it. Structured data makes you eligible for features and removes guesswork; it does not rank you, and Google does not guarantee any feature will show.
Checks, in plain English
Required by Google
Recommended by Google
Things to check

What 64 real business websites show about local business schema
Most sites that publish LocalBusiness markup include a phone number and still leave something else out: of the 34 websites in our sample with a LocalBusiness-type block, 32 had a telephone and 29 a street address, but only 16 had geo coordinates and 9 used the generic type. We read the homepages of 79 distinct websites of businesses that added a location to our app; 64 answered. These figures are exact counts from 2026-10-30.
Small sample. This is one app's users, not a random draw of small businesses, and we do not know which way that skews it. Read it as a pattern worth checking on your own site, not as an industry statistic.
| Measure | Count | Share |
|---|---|---|
| Homepages that loaded | 64 of 79 | 81% |
| Carried some JSON-LD | 48 of 64 | 75% |
| Had a LocalBusiness-type block | 34 of 64 | 53% |
| Had only an Organization block | 10 of 64 | 16% |
| JSON-LD that does not parse | 2 of 64 | 3% |
| Of the 34: telephone | 32 of 34 | 94% |
| Of the 34: street address | 29 of 34 | 85% |
| Of the 34: opening hours | 24 of 34 | 71% |
| Of the 34: sameAs profile links | 23 of 34 | 68% |
| Of the 34: areaServed | 19 of 34 | 56% |
| Of the 34: geo coordinates | 16 of 34 | 47% |
| Of the 34: generic "LocalBusiness" type | 9 of 34 | 26% |
| Of the 34: name, street, phone and hours together | 22 of 34 | 65% |
| Phone differs from the number the owner typed into their account | 3 of 29 comparable | 10% |
What the pattern means in practice:
- The phone number is the field that goes stale. Nearly everyone fills it, and in 3 of the 29 sites we could compare, it was not the number the owner gave us. We did not look at why. A schema block is a second copy of your number in a file nobody reviews, so it needs to be on the list of things you update when a number changes.
- The gaps are in address detail, hours and coordinates. 5 of the 34 blocks had no street address. Google's page asks for the address with as many properties as possible, which is why this generator warns when the street is empty.
- Hours and coordinates are the commonly skipped recommendations. 10 of 34 had no hours and 18 of 34 no coordinates. Both are on Google's recommended list. Our take: add hours only if you will keep them current, because wrong hours in markup are worse than none; add coordinates always, because they do not change.
- One in four chose the generic type. The type is a free field and the most specific one costs the same as the generic one. Separately, 18 of the 63 locations added to our app since 2026-08-01 left the category blank. We have not tied the two together, but both are the same decision: say what kind of business you are.
- 2 of the 64 had JSON-LD that does not parse. We did not look at why. This tool builds the JSON from your fields, so it cannot produce a missing comma; the risk starts when someone edits the output by hand.
What Google requires, recommends and does not promise
We opened Google's Search Central page for local business structured data on 2026-10-30; it showed "Last updated 2026-09-08 UTC". It lists two required properties and a set of recommended ones. The checks in the tool follow it line by line:
| Property | Google's label | What the page asks for |
|---|---|---|
name | Required | The name of the business. |
address | Required | A PostalAddress: "Include as many properties as possible." The examples use street, city, region, postal code and country. |
telephone | Recommended | A primary contact number; include the country and area codes. |
url | Recommended | The fully-qualified URL of the specific location; it must work. |
geo | Recommended | Latitude and longitude, each with at least 5 decimal places. |
openingHoursSpecification | Recommended | One object or an array; day names, times, 24-hour and closed-day conventions, seasonal dates. |
priceRange | Recommended | The relative price range of the business. Shorter than 100 characters: at 100 or more, Google says it will not show a price range. |
menu, servesCuisine | Recommended | For food establishments. The tool shows these fields only for food types. |
department | Recommended | A nested item for a single department. Not in this tool; add it by hand. |
aggregateRating, review | Recommended, narrowly | Only for sites that capture reviews about other local businesses. The tool leaves them out on purpose. |
image, sameAs, areaServed | Not on Google's LocalBusiness lists | Valid schema.org properties that the tool offers as optional extras. On Google's page, image appears as required only for the limited-access restaurant carousel. |
Our take: treat this markup as eligibility and clarity, not as a ranking move. Google's page says search results may display a knowledge panel with details about a business, and it also says Google "does not guarantee that features that consume structured data will show up in search results." We found no sentence on either page claiming the markup lifts rankings. The restaurant carousel is described as limited to a small set of restaurant providers, so do not build a plan around it. What schema reliably does is state your details once, unambiguously, on the source you control.
Google's page says to validate your code using the Rich Results Test. The Schema Markup Validator at validator.schema.org is a separate tool, and its page does not mention Google eligibility, so use both and trust Google's for anything Google-specific.
Choosing the @type, and what to do when none fits
Google's instruction is: "Use the most specific LocalBusiness sub-type possible; for example, Restaurant, DaySpa, HealthClub, and so on." The picker above lists the leaf types we confirmed on schema.org's LocalBusiness page and its parent group pages on 2026-10-30, and puts the parent group (MedicalBusiness, HomeAndConstructionBusiness and so on) at the end of each section for businesses with no exact leaf. If you are a chiropractor or a pest controller, that parent is the honest answer. Do not invent a type: an unknown name is not a more specific type, it is an error.
Two details from Google's page: multiple types go in an array, and "additionalType isn't supported",
so it cannot rescue a vague type. The longer map of industries to types is in
LocalBusiness schema types.
Opening hours, lunch breaks and late nights
Google's examples group days that share hours into one entry, use a single entry for hours that pass midnight (Saturday 18:00 to 03:00), mark 24 hours as 00:00 to 23:59, and mark a closed day as 00:00 to 00:00. The tool writes exactly those forms. For a split shift it repeats the day, one entry per shift:
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "08:00", "closes": "12:00" },
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "13:00", "closes": "17:00" }
] We could not confirm how Google treats repeated days. Google's page shows no split-shift
example, and schema.org's OpeningHoursSpecification page does not address it either. Valid JSON-LD allows a
list of entries, which is why we use it; whether and how it surfaces is Google's call. Seasonal
validFrom and validThrough dates are documented by Google but not built into this tool.
After you copy it
- Match your master record first. Name, address and phone should be character-for-character what is on your Google Business Profile and your listings. The schema is one more copy; it should never be the odd one out.
- Put it on the page about that location. Google says you can add it to any page on your site, and that it may make more sense to put it on a page that contains information about your business. One block per location, never two conflicting blocks on one page (the usual plugin-plus-theme trap, see LocalBusiness schema in WordPress).
- Test the live page. Run it through Google's Rich Results Test and the URL Inspection tool in Search Console. Google notes it may take several days after publishing a page for Google to find and crawl it.
- Check it against your listings. Our free NAP checker reads your site's LocalBusiness schema and checks the name, address and phone against the details you type and against open sources. Across 99 anonymous scans since 2026-09-04, 42% showed at least one mismatch: phone in 25%, address in 22%, name in 10%.
The complete property guide is in LocalBusiness schema markup. Schema covers your own site; the listings that must agree with it are the other half, and our citation building service builds those from one canonical record.
Frequently asked questions
What is local business schema?
Local business schema is structured data, written as JSON-LD in a page's HTML, that states a business's name, address, phone, hours and location in a form machines read directly. It uses the LocalBusiness type from schema.org or one of its more specific subtypes, such as Dentist, Plumber or Restaurant. Visitors never see it; search engines and AI tools can read it.
Which properties does Google require for LocalBusiness?
On Google's Search Central page for local business structured data, two properties are listed as required: name and address. Telephone, url, geo, openingHoursSpecification and priceRange are listed as recommended, along with department, menu and servesCuisine where they apply. This generator labels every check as required or recommended using that page, and shows other properties as optional extras.
Does local business schema improve my rankings?
We found no claim on Google's local business page that the markup raises rankings. The page describes what the markup can feed, such as business details in the knowledge panel, and says Google "does not guarantee that features that consume structured data will show up in search results." Treat schema as eligibility and clarity, not a ranking lever.
Should I use LocalBusiness or a more specific type?
A more specific one. Google's page says: "Use the most specific LocalBusiness sub-type possible; for example, Restaurant, DaySpa, HealthClub, and so on." Pick the leaf type that is true of your business, the parent group (for example MedicalBusiness) only when no leaf fits, and plain LocalBusiness as the last resort. The generator warns when the generic type is selected.
How do I mark up a lunch break or split shifts?
Add each shift as its own opening hours entry for the same day. This generator does that: Monday 08:00 to 12:00 and 13:00 to 17:00 becomes two OpeningHoursSpecification objects. We read Google's local business page and the schema.org OpeningHoursSpecification page on 2026-10-30 and neither describes split shifts or two entries for the same day, so we cannot confirm how Google reads them; keep the same hours on your Google Business Profile.
Is this generator free, and does my data leave my browser?
It is free with no signup, and nothing leaves your browser. The JSON-LD is built on this page from what you type; the page makes no network request when you fill the form, copy or download.
Where do I paste the code, and how do I test it?
Paste the script block into the page that represents the business: the homepage or contact page for a single location, each location page for several. Google's page recommends testing with its Rich Results Test and checking the live page with the URL Inspection tool in Search Console, and notes that it may take several days after publishing a page for Google to find and crawl it. Then compare the name, address and phone with your listings using the free NAP checker.