Local Business Schema Generator
Build the LocalBusiness structured data (JSON-LD) that search engines read, with address, hours, and service area.
Fill in a short form to get a block of code (LocalBusiness structured data) that tells search engines your address, phone, opening hours, areas served, and profile links. Uses the right country code for the US, UK, Australia, or Singapore.
Key takeaways
- check_circle LocalBusiness markup gives search engines and AI systems clean, machine-readable facts about who you are and where you operate.
- check_circle Every detail in the markup must match the visible page and your Google Business Profile.
- check_circle Use the most specific business type that honestly fits, such as Plumber, Dentist, or Attorney.
- check_circle Write phone numbers in international format and country as a two-letter code: US, GB, AU, or SG.
- check_circle Do not add reviews or ratings to your own markup, and do not mark up content that visitors cannot see.
- check_circle Give each branch its own page and its own block, and keep hours updated when they change.
- check_circle Structured data supports local visibility but is not a direct ranking factor, so validate it and pair it with a strong profile.
What is Local Business Schema Generator?
A local business schema generator produces structured data that describes a business in a format machines read easily. You fill in a form with your business type, name, website, phone, address, opening hours, areas served, and profile links, and the tool outputs a JSON-LD script tag you can paste into a page. The output updates as you type, and a warning box points out missing essentials such as the street address or phone number.
Schema.org is the shared vocabulary used by Google, Bing, and other systems for structured data. LocalBusiness and its subtypes describe organizations with a physical location or a defined service area. Markup does not change what visitors see. Instead, it labels facts already on the page so software can read them without interpretation: this string is the phone number, these are the opening hours, this is the country. Search engines use that information to cross-check your details against your Google Business Profile and other sources, and AI answer systems can draw on it when describing local providers.
The generator covers the fields that matter most for local search: PostalAddress with country code, optional GeoCoordinates, weekly OpeningHoursSpecification, areaServed, priceRange, email, and sameAs profile links. It is intentionally limited. It does not add reviews or ratings, and it supports one time range per day. Everything is built in your browser. Use it as a starting point, paste the result on the page that shows the business details, and validate it before you ship.
Why local business markup matters
Local search runs on consistent facts. Search engines compare your website with your Google Business Profile, directories, and other sources to decide whether to trust your details. Structured data states those facts in a form software can read exactly, which reduces the chance of misreadings and helps AI systems describe your business correctly.
How to use this tool
- 1
Enter business details
Add name, type, phone, address, and website.
- 2
Set hours and areas
Set opening hours and list the places you serve.
- 3
Paste into your page
Copy the script tag onto your contact page or homepage, then check it with the Schema Markup Validator.
What this tool checks
Business type
Lets you choose from 22 schema.org types, from LocalBusiness to Plumber, Dentist, Attorney, HairSalon, and Restaurant, so the markup uses the most specific type that fits.
Core identity fields
Writes name, website URL, description, logo or image URL, telephone, email, and price range into the JSON-LD. Empty fields are left out instead of being output as blanks.
Postal address and country code
Builds a PostalAddress from street, city, state or region, and postal code. The country field is prefilled for your region (US, GB, AU, or SG) and converted to uppercase.
Opening hours
Turns the weekly hours grid into OpeningHoursSpecification entries. Days with identical open and close times are grouped together, and days marked Closed or left blank are skipped.
Areas served and profile links
Converts each line of areas served into a City entry under areaServed, and each profile link into a sameAs URL, such as Google Business Profile, Facebook, or LinkedIn.
Missing detail warnings
Flags a missing name, street address, phone, or website, warns if the country is not a 2-letter code, and flags UK because the correct ISO code is GB. The output script tag updates live as you type.
Technical guide
Signals, standards, and what to fix when checks fail.
Choosing a specific business type
Address, phone, and country formats
Hours, service areas, and validation
Deep dive
Keeping markup and Google Business Profile aligned
Your Google Business Profile is the primary source for many local results, and your website markup is a second source that should agree with it. Differences create doubt. If the profile says Suite 200 and the markup says Ste. 200, or the profile lists a mobile number and the page lists a landline, systems have to guess which one is right. Treat the profile as the master record and copy details from it into the page and the generator. Update all three whenever something changes: profile, visible page text, and JSON-LD. Set a recurring reminder to compare them, especially before public holidays when hours change. Consistent details across many directories add up to stronger trust.
Single source of truth
Keep one spreadsheet or document with the approved name, address, phone, and hours. Every profile, page, and script is copied from it, which prevents drift.
Holiday and seasonal hours
Temporary changes should be reflected in your profile and page text. Update the JSON-LD too, then restore normal hours afterward and validate again. Keep a note of the date you changed them, and revert promptly.
Branding variations
Use the exact trading name customers see, not an alternate legal name, unless that is what the profile shows. Consistency matters more than which version you choose. Check that it matches signage and invoices too.
Structuring markup for multiple locations
Multi-location businesses should create one page per location, each with its own LocalBusiness block. The block on a branch page should contain that branch's own address, phone, hours, and areas served, not the head office details. Link each branch page from a locations index and from the site's navigation, and connect it to the wider organization through consistent names and sameAs links. Avoid a single page listing every branch with a single block, because it gives one entity many conflicting addresses. For franchises, keep the trading name consistent and add the branch or suburb to make each entity distinguishable. Generate each block with the tool, change only the location-specific fields, and validate each page.
One page per branch
A dedicated URL for each location gives markup, reviews, directions, and local content a clear home, and gives your profile a specific landing page to link to.
Distinct local content
Each branch page should include real local information: team, services offered there, parking, nearby landmarks, and local contact details, rather than duplicated text with the city swapped. Local proof is far more useful than swapped city names.
Regional formats
Use the right conventions per market: ZIP codes in the US, postcodes in the UK and Australia, six-digit postal codes in Singapore, and matching phone formats.
Service-area businesses and areaServed
Plumbers, electricians, cleaners, and other mobile businesses often serve customers at their homes and may not want a public storefront address. Google lets such businesses hide their address on their profile, and the markup should reflect that choice. The areaServed property tells machines where you operate. The generator writes each line as a City entry, so list towns, suburbs, or districts you genuinely cover. Keep the list realistic, since it should match your profile's service areas and the content of the page. For larger regions, describe coverage in the visible text and consider dedicated pages for the main areas. Avoid stuffing dozens of place names into markup to try to capture searches for locations you cannot reach.
Hiding the address
If your profile hides your address, omit the street line in the markup. City and region can still describe where the business is based without exposing a home address. Keep the visible page consistent with that choice.
Match the profile
Compare the areas you list with the service areas on your Google Business Profile. Large mismatches make either source less credible and confuse customers. Reviewing both every quarter keeps them in sync with real coverage.
Local wording
Use the place names locals use: boroughs or towns in the UK, suburbs in Australia, and estates or districts in Singapore, then confirm they appear on the page. Use natural, familiar names.
Testing and maintaining your markup
Publishing the script is the start, not the finish. Validate it with the Schema Markup Validator to check syntax and with Google's Rich Results Test to see how Google reads the page. Confirm the script appears in the rendered HTML, since some page builders strip script tags. Then monitor. The enhancements and structured data reports in Google Search Console flag errors that appear after theme, plugin, or template changes. Add markup review to any process that changes business details: new phone system, new opening hours, office move, or rebrand. If you use several plugins that output schema, check for duplicate LocalBusiness blocks, because conflicting entries can appear when a theme, an SEO plugin, and a manual script all add their own.
Validate after publishing
Test the live URL, not just pasted code. This confirms the script survived your CMS, cache, and any optimization plugin that minifies or moves scripts. Check the rendered page, not only the source file.
Watch for duplicates
Search the page source for application/ld+json and confirm you have one LocalBusiness block per location. Disable overlapping schema output from plugins if you find several. Remove extra generators so only one block remains per location.
Review on a schedule
Set a quarterly review to compare markup, page text, and profile. Check hours, phone, address, service areas, and profile links, and update any that changed. Put it on the calendar with an owner.
Examples
thumb_up Strong examples
Specific type with country code
"@type": "Plumber", "address": {"@type": "PostalAddress", "addressCountry": "AU"} A specific type gives a clearer signal than a generic parent, and a two-letter country code removes doubt about where the business operates. Both are easy to check.
Hours grouped by shared times
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"], "opens": "09:00", "closes": "17:00" Days that share the same hours sit in one entry. It is compact, easy to audit, and matches how the hours appear on the page.
Phone in international format
"telephone": "+65 6123 4567" The country code makes the number unambiguous for search engines and callers anywhere, and it should match the number shown on the page and the profile.
thumb_down Weak examples
Invented rating
"aggregateRating": {"ratingValue": "5", "reviewCount": "250"} Ratings that are not backed by real, visible reviews break structured data guidelines and risk a manual action. The generator leaves them out on purpose.
Wrong UK country code
"addressCountry": "UK" The ISO code for the United Kingdom is GB. Using UK is a common error that validators may flag and that weakens the location signal.
Areas you do not serve
"areaServed": [{"@type": "City", "name": "Every city in the country"}] Overstated coverage misleads customers and does not match your Google Business Profile. List only the places you can actually reach. The list should match the areas on your Google Business Profile.
Best practices and common mistakes
check_circle Best practices
- done Choose the most specific schema.org business type that describes your main line of work, such as Plumber instead of LocalBusiness.
- done Copy your name, address, and phone number character for character from your Google Business Profile so all sources agree.
- done Place the markup on the page that visibly shows those details, usually the contact page, location page, or homepage.
- done Give each physical branch its own page and its own JSON-LD block with that branch's address, phone, and hours.
- done Include sameAs links to your Google Business Profile and main social profiles to connect your website to your other listings.
- done Update the markup whenever hours, phone, or address change, and validate it again after each edit.
cancel Common mistakes
- close Marking up an address, phone number, or hours that visitors cannot see on the page.
- close Adding invented reviews, star ratings, or awards to the markup to try to earn rich results.
- close Listing service areas you do not actually serve in order to appear in more locations.
- close Pasting the same block onto every page of the site instead of the page that represents the business or location.
- close Using a local phone number in the markup that differs from the one on your Google Business Profile.
Common use cases
Adding structured data to the contact page of a plumbing, dental, legal, or salon website.
Creating consistent markup for each branch of a multi-location business.
Setting up service-area markup for a contractor that travels to customers in several suburbs or towns.
Preparing a site for local search and AI answers by giving machines clean facts about the business.
Replacing hand-edited JSON-LD that has broken commas or the wrong country code.
Who should use this
Glossary
- JSON-LD
- JavaScript Object Notation for Linked Data, the script-based format Google recommends for structured data because it is separate from visible HTML and easy to maintain.
- Schema.org
- The shared vocabulary of types and properties, supported by major search engines, used to describe people, organizations, places, and products in structured data.
- PostalAddress
- The schema.org type that holds street address, locality, region, postal code, and country for a business or place.
- OpeningHoursSpecification
- A schema.org structure that lists days of the week with open and close times in 24-hour format for a business.
- areaServed
- A property naming the places a business serves, useful for service-area businesses that travel to customers instead of receiving them at a shop.
- sameAs
- A property listing URLs of other profiles that represent the same entity, such as social pages and a Google Business Profile.
- NAP
- Name, address, and phone number. Keeping NAP identical across your site, profile, and directories supports trust in local search.
- Service-area business
- A business that serves customers at their locations rather than at its own premises, which may hide its street address on its Google Business Profile.
Frequently asked questions
Ready for a deeper audit?
HeyLead reviews your site, competitors, and growth opportunities with no sales pressure.
Get a Free Audit arrow_forward