User guide
What this tool does
The Schema/JSON-LD Builder writes structured data for a page. You fill in a form, it produces schema.org JSON-LD, and it checks the result against the properties Google marks as required or recommended. It covers 14 types, from articles and breadcrumbs to local businesses, products, events and job postings.
It also works the other way round: paste the JSON-LD already on a page and it loads into the form, so you can fix and extend it.
When to use it
- Launching a page that should earn a rich result, such as a product, event, recipe, video or job posting.
- Setting up the basics on a new site: Organization and WebSite on the home page, BreadcrumbList on inner pages.
- Auditing markup someone else wrote. Paste it in and the checks show what is missing or malformed.
- Building a template. Get one page right, copy the share link, and hand it to the developer who wires it into the CMS.
- Local SEO for a clinic, studio or shop, using the most specific LocalBusiness type, such as Dentist or Restaurant.
How to use it
- Choose a schema type from the first dropdown. If the form offers a More specific type, pick the closest one: a dental clinic is a Dentist, not just a LocalBusiness.
- Fill in the required fields first. They are marked Required. Then add every Recommended field you can; these are what usually make the difference between valid markup and a rich result.
- Open Optional properties for anything else that applies.
- Watch the output panel. The JSON-LD updates as you type, and the status line counts errors and suggestions. Switch to Checks to see each one.
- Describe more than one thing on the page with + Add type. With two or more types, the output becomes a single
@graph, which is the cleanest way to combine, say, an Article with its BreadcrumbList. - Copy the script tag and paste it into the page’s HTML, inside
<head>or<body>. In WordPress, a header-scripts plugin or your SEO plugin’s custom schema box will do; in AEM, add it to the page component’s HTL. - Test the live page in Google’s Rich Results Test once it is published.
To bring in existing markup, press Import JSON-LD and paste either raw JSON or the page’s <script type="application/ld+json"> tags. Import and replace starts over; Add to this page appends.
Reading the results
| Check | What it means | What to do |
|---|---|---|
| X is required (error) | Google will not consider the page for this rich result without it. | Fill it in. If the information does not exist, this type is the wrong choice for the page. |
| Add X (recommended) (suggestion) | Valid without it, but Google says it improves how the result looks or ranks. | Add it when the page shows that information. |
| Use an absolute URL | URLs must start with https:// and include the domain. |
Replace /images/logo.png with https://example.com/images/logo.png. |
| Use ISO 8601 | Dates must look like 2026-11-01, date-times like 2026-11-01T19:00+05:30. |
Use the Now button or type the format shown. |
| Add a time zone offset | A time without an offset is ambiguous. | Add +05:30 for India, or Z for UTC. |
| Use an ISO 4217 code | Currencies are three-letter codes. | INR, USD, EUR, never ₹ or Rs. |
| Use an ISO 8601 duration | Durations are written as periods. | PT30M is 30 minutes, PT1H15M is 1 hour 15 minutes. |
| Cross-field errors | Rules spanning several fields, such as an event ending before it starts, or a product with neither an offer nor a rating. | Read the message; it names both sides of the problem. |
No errors means the markup is well-formed and has everything Google lists as required. It does not guarantee a rich result: Google also weighs page quality, and only shows some rich results to certain kinds of site. The note at the top of each form explains the current situation for that type.
Worked example
A dental clinic in Bandra wants its address, hours and location to show correctly in Search and Maps. Choose Local business, set the specific type to Dentist, and fill in the name, address, phone, an image, coordinates and two sets of opening hours. (Press Load example on the Local business form to see exactly this.)
The builder produces:
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Example Dental Care",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Hill Road, Bandra West",
"addressLocality": "Mumbai",
"addressRegion": "Maharashtra",
"postalCode": "400050",
"addressCountry": "IN"
},
"url": "https://example.com/",
"telephone": "+91-22-1234-5678",
"image": "https://example.com/clinic-1200x900.jpg",
"priceRange": "₹₹",
"geo": {
"@type": "GeoCoordinates",
"latitude": 19.0544,
"longitude": 72.8402
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "10:00",
"closes": "19:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday"],
"opens": "10:00",
"closes": "14:00"
}
]
}
Notice what the builder did for you: the coordinates became numbers, each set of days became a list, and every nested object got its own @type.
Limits and privacy
- Everything runs in your browser. Nothing you type is sent to a server, logged or stored by this site.
- Your current work is saved in this browser (local storage) so a refresh does not lose it. Clear form removes it.
- Share links carry the whole form inside the link itself. Anyone with the link sees what you entered, so do not share links containing private details.
- 14 types are supported today. Importing markup with other types, or with properties the form does not have yet, keeps what it can and lists what it left out.
- The checks follow Google’s documentation as of the date at the top of this page. Google changes rich-result rules from time to time; each form links to the current guidelines.
Further reading
- Introduction to structured data, Google Search Central
- Search gallery of supported rich results, Google Search Central
- schema.org full type hierarchy
- JSON-LD 1.1 specification, W3C
FAQ
- Is JSON-LD better than microdata?
- Google supports both, but recommends JSON-LD. It sits in one script block instead of being woven through your HTML, so it is easier to write, review and keep correct when templates change.
- Where should the script tag go?
- Anywhere in the page’s HTML, in the head or the body. It must describe content that visitors can actually see on that same page.
- Will adding structured data guarantee a rich result?
- No. Valid markup makes a page eligible. Google decides whether to show a rich result based on the page’s quality, the query and its own policies for each type.
- Can I put several types on one page?
- Yes. Use “+ Add type” and the builder combines them into one @graph, for example an Article, its BreadcrumbList and the publishing Organization.
- Does this tool send my data anywhere?
- No. It runs entirely in your browser. Your work is kept in this browser’s local storage so a refresh does not lose it.