Skip to content
RankThat

Schema Markup Generator

Fill in your business details and get valid JSON-LD for LocalBusiness or Organization schema, ready to paste into your site.

JSON-LD

How to use it

  1. 1Choose the type and fill in the fields you have.
  2. 2Copy the code.
  3. 3Paste it into your site’s head, or use your SEO plugin’s schema box.

What schema does

Schema tells search engines and AI assistants the facts about your business in a format they can read without guessing: name, address, phone, hours, area served. It can also make you eligible for rich results.

Use only true facts

Only mark up what visitors can see on your site. Fake reviews or ratings in schema can earn a manual penalty from Google.

Go further

WordPress Bridge

Add schema to every page of a WordPress site automatically.

See how

From form to valid JSON-LD: using the schema markup generator

This schema markup generator turns a short form into JSON-LD that describes your business: its type, name, address, phone, hours, service area and profiles. This guide covers which type to choose, how to fill in each field so the output is valid, what the finished code looks like, how to extend it by hand, where to paste it on WordPress and other sites, and how to test it.

Choosing the type

The generator offers a general LocalBusiness, eleven more specific business types, and Organization. Pick the most specific one that is true.

You areChooseNotes
A plumber, electrician, HVAC company or rooferPlumber, Electrician, HVACBusiness, RoofingContractorSpecific types tell search engines and AI assistants your trade without guessing
A dental practiceDentist
A clinic, med spa or physical therapistMedicalBusiness
A law firmLegalService
A restaurant or caféRestaurant
A shop with a physical locationStore
A garageAutoRepair
A real estate agentRealEstateAgent
Another business with a location customers visit or a service areaLocalBusinessThe safe general choice
An online-only business, software company or brandOrganizationNo address, hours or service area are added

When you choose Organization, the generator leaves out the address, opening hours and areas served, since those describe a local business.

Filling in each field

FieldBecomesHow to fill it in
Business namenameExactly as on your Google Business Profile and storefront
WebsiteurlYour homepage, with https
PhonetelephoneInclude the country code: +1 512 555 0142
EmailemailOptional. A public address you’re happy to have read by bots
Street, city, state, ZIP, countryaddress (a PostalAddress)Country as a two-letter code: US, CA, GB
Logo URLlogoA full https address to a square or wide logo image
Opening hoursopeningHoursTwo-letter days and 24-hour times, groups separated by commas: Mo-Fr 07:00-19:00, Sa 08:00-14:00
Areas servedareaServed (each one a City)Comma-separated: Austin, Round Rock, Cedar Park
ProfilessameAsComma-separated full addresses of your Google Business Profile, Facebook, Yelp, LinkedIn and similar

Day codes are Mo Tu We Th Fr Sa Su. For a business open around the clock, Mo-Su 00:00-23:59 is the usual way to say it.

Empty fields are simply left out of the code, so fill in what you have and skip the rest.

What the finished code looks like

Here is the output for Coastline Plumbing with the Plumber type selected:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Coastline Plumbing",
  "url": "https://coastlineplumbing.com",
  "telephone": "+1 512 555 0142",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1200 Barton Springs Rd",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78704",
    "addressCountry": "US"
  },
  "openingHours": [
    "Mo-Fr 07:00-19:00",
    "Sa 08:00-14:00"
  ],
  "areaServed": [
    {
      "@type": "City",
      "name": "Austin"
    },
    {
      "@type": "City",
      "name": "Round Rock"
    },
    {
      "@type": "City",
      "name": "Cedar Park"
    }
  ]
}
</script>

The form opens with Coastline Plumbing’s details filled in as an example. Replace every field before you copy the code. Publishing someone else’s address in your schema is a surprisingly common slip.

Adding what the form doesn’t cover

The generator writes the core facts. You can add more properties by hand before pasting, as long as each one is true and visible on your site. Useful additions for a local business:

"image": "https://coastlineplumbing.com/images/van-and-team.jpg",
"priceRange": "$$",
"geo": {
  "@type": "GeoCoordinates",
  "latitude": 30.2620,
  "longitude": -97.7590
},

Add these lines inside the main braces, with commas between properties. A missing or extra comma is the most common reason JSON-LD fails to validate.

For a page of common questions, you can add a separate FAQPage block:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Do you charge a call-out fee?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "No. We quote a fixed price before any work starts."
    }
  }]
}
</script>

Since 2023, Google has shown FAQ rich results only for a small set of well-known government and health sites, so don’t expect the dropdowns in search. The markup still states your answers in a form machines read easily, which helps AI assistants that summarize your page.

For the full list of properties each type supports, schema.org’s LocalBusiness page is the official reference.

Where to paste it

Your siteWhere the code goes
WordPress with Yoast, Rank Math or SEOPressCheck what your plugin already outputs first. If it already has Organization or LocalBusiness schema, edit the details there instead of adding a second block
WordPress without schemaA header code snippet plugin, or your theme’s “header scripts” box, on the homepage or site-wide
Static HTMLInside <head> on the homepage, or on every page if your template shares one head
Other site buildersTheir custom code or “head” settings

Business-level schema belongs on the homepage at minimum. One block for the business is enough; don’t paste copies with different details on different pages. A business with three locations should give each location page its own block with that location’s address and phone.

Testing it

Run the page through Google’s Rich Results Test and the Schema Markup Validator at validator.schema.org. Then run our meta tag checker on the live page: the structured data row should list the type you chose. If it’s empty, the code didn’t make it into the published page, often because a caching plugin is serving an old copy.

Mistakes that do real harm

  • Details that don’t match your Google Business Profile. A different phone number or an old address weakens trust in both. Keep your name, address and phone (NAP) identical everywhere, including your Google Business Profile.
  • Ratings and reviews you wrote yourself. Adding aggregateRating with numbers that aren’t from real, visible reviews breaks Google’s rules and can lead to a manual action.
  • The wrong type. Marking a law firm as Organization loses the location details; marking a blog post as LocalBusiness confuses everyone.
  • Relative addresses. /logo.png should be https://yoursite.com/logo.png.
  • Two plugins outputting schema. Conflicting blocks with different names or hours are worse than one plain block.

Beyond one block of code

The Site Audit flags sites with no Organization or LocalBusiness schema, pages with no structured data, and JSON-LD with errors. On WordPress, RankThat can add Organization or LocalBusiness schema and page-level schema through the free Bridge plugin, and you review each change and can undo it in one click. For trades, the SEO for plumbers page shows how schema fits with the rest of local SEO, and the glossary covers JSON-LD in more depth.

Questions, answered

Where do I paste the code?

In a <script type="application/ld+json"> tag in the page head, or in your SEO plugin’s custom schema field. One block per page is enough for this kind of schema.

Fix it on every page, not just this one.

RankThat audits the whole site, drafts the fixes and applies them in WordPress, with one-click undo.