Schema Markup Generator
Generate JSON-LD structured data for an article, organisation, local business, product or FAQ page, with the properties Google actually requires.
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to migrate a WordPress site without downtime",
"url": "https://example.com/blog/wordpress-migration/",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/blog/wordpress-migration/"
},
"description": "A step by step migration checklist, from the staging copy to the DNS cutover.",
"image": [
"https://example.com/img/migration.png"
],
"author": {
"@type": "Person",
"name": "Jordan Ellis",
"url": ""
},
"publisher": {
"@type": "Organization",
"name": "Example Blog",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/img/logo.png"
}
},
"datePublished": "2026-01-31T09:00:00+00:00",
"dateModified": "2026-01-31T09:00:00+00:00"
}
Output is valid and updates as you type.
Fix the highlighted fields to update the output.
Pick what the page is and fill in the properties. The generator writes valid JSON-LD with the fields Google treats as required, and nothing invented to pad it out.
How to use
- Mark up what the page actually is. Article markup on a product page, or FAQ markup on a page with no visible questions, is what manual actions are for.
- Everything in the markup has to be visible on the page. Structured data describes the page; it does not add to it.
- Use absolute URLs for the page, the image and the logo. A relative URL in JSON-LD resolves nowhere.
- Wrap the output in a script tag and put it anywhere in the document:
<script type="application/ld+json"> … </script>. Head or body both work. - Check the result in Google’s Rich Results Test before shipping. It reports required properties that are missing, which is faster than waiting for Search Console.
Example
The FAQ shape, which is the one most often marked up wrongly:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does a migration take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Most sites move in under an hour."
}
}
]
}
Both the question and the full answer must appear on the page. A shortened answer in the markup, or an answer hidden behind a click that never renders, is a mismatch.
Pitfalls
- Marking up content that is not visible on the page is the single most common structured data violation, and it is the one that draws a manual action.
- FAQ rich results were restricted in 2023 to government and health sites. The markup is still valid and still used for understanding; the visible result is gone for most sites.
- Review markup for reviews you wrote about yourself is not allowed. Ratings must come from real customers and be visible.
- A relative URL in JSON-LD is not resolved against the page. Always absolute, with the protocol.
dateModifiedthat moves every day with no real change is noticed, and the signal stops counting.- Two different scripts describing the same entity with different values leaves the search engine to pick, and it usually picks neither.
- An
Articleneeds a headline under 110 characters. Longer ones are rejected rather than truncated. priceCurrencytakes the ISO code, not a symbol, andpricetakes a number with no symbol at all.- A literal
</script>inside any text value ends the script tag early when the JSON is embedded in HTML. Write it as<\/script>, which JSON allows and browsers accept.
Compatibility
JSON-LD is Google’s preferred structured data format and is read by Bing and Yandex as well. Article, Product, LocalBusiness and Organization all support rich results; FAQPage has been limited to authoritative government and health sites since August 2023. Schema.org vocabulary changes over time, so re-test after a redesign. The tool runs entirely in your browser.
Frequently asked questions
Where does the script tag go?
Do I still get FAQ rich results?
Can I have more than one type on a page?
@graph array. Keep them consistent with each other.