Schema Markup Generator
Generate JSON-LD schema markup for FAQPage, Article, Product, LocalBusiness, Event, Recipe, HowTo and more, with field warnings. Or validate pasted JSON-LD.
How to use Schema Markup Generator
- 1Choose a schema type and fill in the fields, adding rows for questions, steps or breadcrumbs where needed.
- 2Fix any error or warning shown next to the form, such as a missing required field or a bad date.
- 3Copy the script tag into your page, then test the live page in Google's Rich Results Test.
What makes it better
- Nine types: FAQPage, Article, Product, LocalBusiness, BreadcrumbList, Organization, Event, Recipe and HowTo
- Build and Validate modes: create markup, or paste existing JSON-LD to check it
- Output is created with JSON.stringify, so the JSON is always syntactically valid
- Required and recommended field warnings per type, plus URL, date and number format checks
- Syntax errors in pasted JSON-LD are reported with line and column
About Schema Markup Generator
Schema Markup Generator builds JSON-LD structured data for nine common types from a form with repeatable rows for FAQ items, breadcrumb items and steps. It writes the result as a script tag and as raw JSON, checks required and recommended fields against Google's published guidance as of this writing, and validates dates, URLs and numbers. Switch to Validate to paste existing JSON-LD and get a syntax check with line and column plus missing-property warnings.
Common uses
- Add FAQ or breadcrumb markup to a template without hand-writing nested JSON.
- Produce Product markup with an offer and rating for a shop page.
- Check that a JSON-LD block copied from a plugin has a context, a type and the fields Google asks for.
- Describe a local business with address, opening hours and map coordinates.
Example
Input
{
"type": "FAQPage",
"fields": {},
"lists": {
"faq": [
{
"question": "Do you ship internationally?",
"answer": "Yes. We ship to 40 countries and show the cost at checkout."
},
{
"question": "Can I return opened soap?",
"answer": "Unopened bars can be returned within 30 days."
}
]
}
}Result
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do you ship internationally?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. We ship to 40 countries and show the cost at checkout."
}
},
{
"@type": "Question",
"name": "Can I return opened soap?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Unopened bars can be returned within 30 days."
}
}
]
}
</script>Good to know
- Valid markup does not guarantee a rich result. Google decides eligibility, and as of this writing FAQ rich results are limited to some government and health sites and How-to rich results are no longer shown.
- Markup must match what visitors can see on the page. Marking up hidden or made-up content, such as ratings nobody gave, can lead to a manual action.
- This page checks structure only. It cannot fetch your live page; for a full check use Google's Rich Results Test at search.google.com/test/rich-results.
Schema Markup Generator FAQ
What is JSON-LD schema markup?
JSON-LD is a block of JSON inside a script tag that describes a page's content using the schema.org vocabulary, such as a product, event or FAQ. Search engines read it alongside the visible page to understand what it is about.
Where do I put the JSON-LD script tag?
Anywhere in the head or body of the page it describes; the head is the usual place. It can be added to a template or injected by a tag manager, but it should be present in the page that visitors see.
Which schema types does Google show rich results for?
Google documents rich results for types such as Product, Recipe, Event, Article and breadcrumbs. Some, like FAQ and How-to, are restricted or no longer shown as of this writing, so check Google's current documentation before relying on one.
How do I test my structured data?
Publish the page, then paste its address into Google's Rich Results Test or the Schema Markup Validator. You can also use the Validate mode here to catch syntax errors and missing fields before you publish.
Why does the generator warn about missing fields?
Each type has properties Google lists as required or recommended for rich results. Required ones show as errors, and recommended ones as warnings you can ignore if they do not apply to your page.