Free schema tool
Local Business Schema Generator: Free, Runs in Your Browser
Private: nothing is uploaded. Everything you type or paste is processed locally in your browser.
Most local business schema generators stop at name, address and phone, then offer you a star rating box that Google won’t use for your own business. This one builds the full LocalBusiness JSON-LD block and checks every property against what Google’s local business documentation actually lists. It also tells you which properties are there for Google and which are schema.org extras that Google doesn’t read.
It handles the awkward parts too. Lunch breaks, closed days, 24 hour opening, holiday closures. Service-area businesses that hide their street address. Departments with their own hours, and brands with dozens of branches (paste your Business Profile download). One click fills a dental practice or a roofing contractor, so you can see a finished block before you type anything.
Which schema types are worth adding at all is covered in the six schema types most businesses actually need. This page is the generator for the LocalBusiness one.
Build your LocalBusiness JSON-LD
Fill in what applies and skip the rest. The code on the right updates as you type, and the checklist under it says which properties Google’s local business documentation lists and which are schema.org extras.
1. Business type
2. Name, website and contact
Used for the @id: home page plus #organization.
Start with + and the country code.
At least 112 by 112 pixels, per Google.
3. Address and map position
Two letters (ISO 3166-1), e.g. US, GB, IN.
Coordinates: right-click your building in Google Maps on a computer and click the numbers at the top of the menu to copy them.
4. Opening hours
Seasonal or holiday closures
5. Service area
Mirror your Business Profile service areas. Google allows up to 20 there.
6. Services and profiles
Output as an OfferCatalog of Service items. List only services the page mentions.
Your real profiles on other sites: social, directories, review sites.
7. Departments
For a part of the business with its own phone or hours, like a store with a pharmacy. Google’s format for the name is store name then department name.
8. More locations (paste or upload a sheet)
Paste a CSV or your Business Profile download. Columns read by name: Business name, Business code, Address line 1 to 5, Locality, Administrative area, Postal code, Country / Region, Latitude, Longitude, Primary phone, Website, Monday hours to Sunday hours. Common names like City, State, Zip, Phone and URL work too. When locations are present, the form above becomes the brand.
9. Reviews and ratings
10. FAQ (optional FAQPage)
Only questions and answers shown word for word on the same page. Google no longer shows FAQ rich results.
11. Output options
Nothing you type leaves this page. It’s all processed in your browser.
Load a preset or fill in the form. The JSON-LD and the checklist appear here.
Your JSON-LD
- Copy the code with the script tag ticked.
- Open the Rich Results Test, pick the Code tab, paste, and run the test.
- Check the local business item for errors. Then paste the same code into the Schema Markup Validator, which also reports the schema.org properties Google ignores.
- After you publish, test the live URL in the same tool.
Checklist
Quick answer
This free local business schema generator turns a form into valid LocalBusiness JSON-LD for any schema.org subtype, including Dentist, RoofingContractor, Plumber, Electrician, HVACBusiness, LegalService and Restaurant. It writes opening hours, service areas, departments, multi-location graphs and an optional FAQPage, then checks each property against Google’s local business documentation and flags what Google won’t use, like stars on reviews of your own business. It’s for owners, developers and SEOs who’d rather paste one clean block than trust a plugin’s defaults.
How to Use the Local Business Schema Generator
Six steps. The slow part is finding your coordinates and hours, and even that takes a few minutes.
For step 6, the Rich Results Test has a Code tab: paste the block with its script tag and run the test. But it only reports what Google supports. So paste it into the Schema Markup Validator too, which checks the schema.org-only properties like areaServed. Once the page is live, switch to testing the URL.
How to Read the Checklist
Every row is one property, and the In Google’s docs column says where it stands: Required, Recommended, Organization doc, or Not in Google docs. Organization doc means Google’s organization markup guide, which applies because LocalBusiness is a subtype of Organization. Seeing Not in Google docs? That’s fine. Google just doesn’t list that property, so don’t expect a visible change in Search from it.
| Status | What it means | What to do |
|---|---|---|
| Error | The block is broken or Google would ignore that part: no name, no address, a relative URL, a bad country code, hours with a missing time. | Fix it before you publish. |
| Warning | Valid, but weaker than it should be: coordinates under 5 decimal places, a phone with no country code, the generic LocalBusiness type, review markup that was left out. | Fix it if you can. The note says how. |
| Missing | A property Google recommends is blank. | Add it if it’s true and shown on the page. |
| Info | Something worth knowing, usually a schema.org-only property or a deliberate choice like a hidden street address. | Nothing, unless the note surprises you. |
| Pass | Present and in the shape Google documents. | Nothing. |
What to do about each warning
- geo under 5 decimal places. Google’s doc says latitude and longitude need at least 5 decimal places. Don’t round. Copy them again from Google Maps.
- telephone with no country code. Google asks for the country code and area code, so start with + and the country code, like +1 217 555 0142.
- Plain LocalBusiness. Google asks for the most specific subtype. Check the type line under the dropdown: it shows the schema.org path, so you can see whether you’re as far down as you can go.
- priceRange of 100 characters or more. Google won’t show it. Keep yours to a short range or a run of currency signs.
- Department name. Google’s format is store name then department name, unless the department has its own brand.
- No street address. That’s fine for a service-area business that hides its address on its Business Profile. Tick that box and the warning becomes a note. Everyone else should add the street.
- Locations. Each row of your sheet gets its own status in the Locations table: no page URL, no country code, coordinates under 5 decimals, or hours the tool couldn’t read.
Worked example: the dental practice preset
Press Dental practice preset and the summary reads: Dentist block, 2 of 2 required items in place, 4 of 6 recommended properties filled, 0 errors, 2 warnings. Here’s why.
- geo: Warning. The preset’s coordinates are 39.7817 and -89.6501, four decimal places each. Google wants five or more, so you’d copy them again from Maps.
- aggregateRating: Warning, left out. The preset says the 4.8 rating from 212 reviews is about Acme Dental itself. Under Google’s review rules that’s self-serving, so the generator drops it from the code. Tick Include it anyway and it goes back in, as an Error.
- priceRange: Missing. It’s only recommended. Most dentists leave it out, and you can too.
- department: Pass. Acme Dental Kids starts with the practice name and has its own Tuesday and Saturday hours, which is exactly the case Google describes.
- areaServed and hasOfferCatalog: Info. Five towns and seven services, written in valid schema.org. Neither one is in Google’s local business doc, though.
The hours show the grouping at work. Monday, Tuesday and Thursday share 08:00 to 17:00, so they go into one OpeningHoursSpecification with three days, while Wednesday and Friday get one each. Saturday and Sunday become 00:00 to 00:00, Google’s documented way of saying closed all day, and the holiday closure gets validFrom and validThrough. That’s 5 entries, about 5 KB in all.
Not sure what else belongs on your page beyond this block? Read the guide to the six schema types worth adding, which ranks them.
Which LocalBusiness Type to Choose
Google’s doc is short on this point: use the most specific LocalBusiness subtype you can. Every type below exists on schema.org, and the parent column shows where it sits in the hierarchy (checked against the schema.org vocabulary file).
| Type | Parent on schema.org | Use it for |
|---|---|---|
| Dentist | LocalBusiness and MedicalBusiness (both are listed) | A dental practice. Don’t use MedicalClinic for a dentist. |
| MedicalClinic | MedicalBusiness, part of schema.org’s health and life sciences extension | A clinic with several clinicians or an urgent care centre. |
| Physician | MedicalBusiness | A doctor’s practice. |
| RoofingContractor | HomeAndConstructionBusiness | Roofers, residential or commercial. |
| HomeAndConstructionBusiness | LocalBusiness | Trades with no subtype of their own. There’s no landscaping or pest control type, for example. |
| Plumber | HomeAndConstructionBusiness | Plumbers and drain companies. |
| Electrician | HomeAndConstructionBusiness | Electricians. |
| HVACBusiness | HomeAndConstructionBusiness | Heating, ventilation and air conditioning. |
| LegalService | LocalBusiness | Law firms. Attorney and Notary are subtypes of it. |
| Restaurant | FoodEstablishment | Restaurants. Cafes, bakeries and bars have their own types. |
One trap. schema.org’s ProfessionalService is still in the vocabulary, but its own description says it was deprecated because people confused it with Service. So pick Dentist, Attorney, AccountingService or Notary. Is your trade missing from the dropdown? Choose Other and start typing. The list holds all 130 LocalBusiness subtypes schema.org currently defines, and anything else is flagged.
Dental practices: the dental preset
The dental preset uses Dentist, a five-town city list for areaServed, Monday to Friday hours with a late Wednesday, and seven typical services from checkups to emergency care. It also has a children’s department with its own hours and two FAQ pairs. Swap every value for yours. If the practice has several dentists, give each one a profile page with Physician markup, as covered in SEO for doctor and provider profile pages. The block itself is one small part of dental SEO. The Business Profile and the practice’s own pages do most of the work.
Roofers and other trades: the roofing preset
The roofing preset is set up as a service-area business: RoofingContractor, no public street address, eight towns, a 40 mile radius and six services from roof replacement to commercial flat roofing. Plumbers, electricians and HVAC firms work the same way, just with their own type. On contractor project pages, keep LocalBusiness for your own details, and never put a customer’s address in any schema field. There’s more on the wider strategy on the roofing SEO page.
Service-Area Business Schema: areaServed and GeoCircle
A service-area business goes to the customer. Google’s Business Profile help says that if you don’t serve customers at your address, you should remove the address from your profile. The same page sets two limits that matter here: up to 20 service areas, and no radius. You name cities, postal codes or other areas.
The markup side works differently. Google’s local business doc requires an address and doesn’t list areaServed at all. So when you tick the service-area box, the generator does this:
- It leaves out streetAddress but keeps locality, region, postal code and country, which still form the address Google requires.
- It writes your towns as areaServed, each one a schema.org City, AdministrativeArea or State, or plain text if you prefer.
- If you add a radius, it writes a GeoCircle with your coordinates as the midpoint. schema.org reads a plain geoRadius number as metres, so 40 miles becomes 64374.
areaServed is schema.org vocabulary that other parsers can read. Google, though, gets your service area from your Business Profile. Keep the two lists the same, and if your markup lists more than 20 places, the checklist warns you, because your profile can’t match it.
Several Locations, Departments and @id
Google’s doc says to define each location as its own LocalBusiness, and its url should be the fully qualified URL of that location’s page. So a brand with three branches needs three blocks, one on each branch page, plus the brand’s Organization on the home page. Paste your sheet under More locations and the generator does that split for you:
- The form above becomes the brand: an Organization with the @id https://www.example.com/#organization, its logo and its sameAs profiles.
- Each row becomes a LocalBusiness with its own @id (its page URL plus #localbusiness), address, phone, coordinates and hours, and a parentOrganization pointing at the brand.
- The Code for menu switches between everything in one block, the brand only, and a single location’s page.
Hours in the sheet follow Google’s bulk upload format: 09:00-17:00 or 09:00AM-05:00PM, two sets separated by a comma, x for closed, and 00:00-24:00 for open 24 hours. An empty day counts as closed when the other days have hours. A location with no hours at all can take the hours from section 4. Closing at midnight is written as 23:59, the way Google’s own department store example does it.
About @id. Google removed @id from its local business doc a while ago, and its documentation changelog says the url property alone is enough to identify a business. @id is still useful in your own graph, because it’s how the location points at the brand and the FAQ points at the page. Don’t want it in your code? Untick it under Output options.
Markup can’t help a location page Google hasn’t found. If your branch pages aren’t indexed, check for orphaned location pages first. Then read multi-location SEO without duplicate content before you write 40 near-identical pages.
Departments are for one site with parts that run differently, like a store with a pharmacy. Google’s format for the name is store name then department name, so Acme Dental and Acme Dental Kids. An explicitly branded department can use its own name. Either way, each department gets the parent’s address and its own phone and hours.
Review Stars and FAQ Markup: What Google Won’t Show
Reviews first. Google’s review snippet guidelines say that when a business controls the reviews about itself, its pages using LocalBusiness or any other Organization markup are ineligible for star review snippets. That covers reviews written straight into the markup, and reviews pulled in by an embedded third-party widget too. Google calls these self-serving, and the rule dates back to its review rich results update. The local business doc now says aggregateRating and review are only recommended for sites that capture reviews about other local businesses.
So if you pick Yes: reviews of this business, the generator leaves the rating out of the code and tells you why. Do you run a directory that reviews other businesses? Then pick the other option and it goes in.
FAQ is simpler now. Google first limited FAQ rich results to well-known, authoritative government and health websites (Google’s announcement). Since then it has stopped showing them altogether and removed the FAQ documentation. The generator still writes FAQPage, because it’s valid schema.org and other systems can read it. It just won’t put anything extra on a Google results page. And only mark up questions that appear word for word on the same page, since Google’s general guidelines say not to mark up content readers can’t see.
Where to Paste It, and How to Check It Worked
Google recommends JSON-LD where your setup allows it, and it reads JSON-LD added by JavaScript as well (Google’s JavaScript guide). Here’s what that means in practice:
- One location. Put the block on the home page or the contact page, whichever shows the address and hours.
- Several locations. Brand block on the home page, one location block on each branch page.
- WordPress. A Custom HTML block on that page works, or your theme’s header for the home page only. But check first whether Yoast, Rank Math or your theme already outputs LocalBusiness. Two competing blocks for one business is the usual mess, and the fix is to switch one off.
- After publishing. Test the live URL in the Rich Results Test, then use URL Inspection in Search Console to ask for a recrawl.
Large sites shouldn’t paste blocks by hand at all. Generate them from the page template so every branch page gets the same shape, as described in structured data at scale. This generator is still handy for building and checking that one template block.
Limits of This Generator
- It doesn’t read your page, so it can’t confirm that the hours, phone and services in the markup match what visitors see. That part’s on you, and it’s the rule that matters most.
- It doesn’t open your URLs, so it can’t check that a link works, a logo is 112 pixels or more, or a photo reaches the 50,000 pixel guideline.
- It can’t map Business Profile categories to schema.org types. Google’s category list is far longer than schema.org’s 130 LocalBusiness types, so picking the closest type is your judgment call.
- Hours are one weekly pattern per location, plus full-day closures. Special hours for a single day, like closing early on a holiday, aren’t supported.
- The sheet import reads the columns listed in section 8. Categories, attributes, photos and descriptions in a Business Profile download are ignored.
- Very large imports work (5,000 locations took about a quarter of a second in testing and came to 9.3 MB of code), but the preview stops at 300,000 characters. Copy and Download always include everything.
- Valid markup doesn’t guarantee anything. Google’s general guidelines say a correct block makes a feature possible, not certain.
Local Business Schema FAQ
What is a local business schema generator?
It’s a form that writes LocalBusiness structured data for you, in JSON-LD, the format Google recommends. You fill in your name, address, hours and so on, and it outputs a script block you paste into your page. This one also checks the block against Google’s local business documentation.
What are the required properties for LocalBusiness schema?
Google requires two: name and address. It recommends url, telephone, geo, openingHoursSpecification, priceRange and department, plus menu and servesCuisine for food businesses. Everything else is optional or schema.org only.
Can I add star ratings to my own business with schema?
Not in a way Google will show. Google’s review snippet guidelines make LocalBusiness and Organization pages ineligible for star snippets when the business controls the reviews about itself, including reviews from an embedded widget. Rating markup only makes sense on sites that review other businesses.
Which schema type should a dentist or a roofer use?
A dental practice should use Dentist and a roofer should use RoofingContractor. Both are LocalBusiness subtypes on schema.org, and Google’s doc asks for the most specific subtype available.
How do I mark up a service-area business with no public address?
Leave out the street but keep the city, region, postal code and country, because Google’s doc requires an address. Then list the towns you serve in areaServed, matching your Business Profile, which allows up to 20 service areas. A GeoCircle radius is valid schema.org, but your profile can’t use a radius.
Do I need @id in LocalBusiness schema?
Google doesn’t need it. It removed @id from its local business doc and says url alone identifies the business. @id is still useful for linking nodes in your own markup, like a location pointing to its brand.
Should I still add FAQPage markup?
Only if you want it for systems other than Google Search. Google no longer shows FAQ rich results and has removed the documentation. If you keep it, mark up only questions shown word for word on the page.
Where should LocalBusiness schema go on my site?
On the page that shows the business details: usually the home page or the contact page for one location. With several locations, put each location’s block on that location’s own page, because Google says the url should be the page for that specific location.
Want the markup, the profile and the pages done properly?
Schema is one line item. Local rankings come from the Business Profile, the location and service pages, and reviews people actually leave. That’s the work in my local SEO service.
Local SEO servicesRelated reading
- Schema markup: the six types most businesses actually need
- Multi-location SEO without duplicate location pages
- Location pages not indexed? Find the orphans
- Contractor project pages and the structured data Google supports
- SEO for doctor and provider profile pages
- Local and Business Profile SEO for service and booking businesses
More free tools: all SEO tools.
Built by Ram Kr Shukla
SEO and growth consultant with 20+ years in SEO and growth across 50+ brands. Google Analytics and Google Ads certified. Builds and audits structured data for local businesses, from single-site practices to multi-location brands.




