Schema Markup Generator
Developer Tools · Added 18 August 2026
Fill in a form and get a JSON-LD block ready to paste into your page. Nine types are covered — the ones Google actually documents — and each says plainly what the markup can and cannot do for a page, because structured data makes a result eligible for a rich treatment rather than guaranteeing one.
JSON-LD
Still needed for a valid block: Headline, Author name, Published. The output below updates as you fill them in.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article"
}
</script>Before you ship it
- Paste the block into the page's
<head>, or anywhere in the body — both are valid, and position makes no difference. - Every value must correspond to something a visitor can see on the page. Marking up a price, a rating or an event that is not shown is what Google's structured data policies call spammy markup, and it is actioned manually.
- Validate it with Google's Rich Results Test and with the Schema.org validator — they check different things, and both are free.
- Structured data makes a page eligible for a rich result. It does not guarantee one, and Google withdraws types over time — FAQ rich results were restricted to a small set of sites in 2023.
Empty fields are dropped rather than emitted blank, so a partly filled form still produces a valid block. Everything is generated in your browser; nothing you type here is sent anywhere.
How to use the schema markup generator
- 1Choose the type that describes what the page is actually about.
- 2Read the note about what that type can produce in search results.
- 3Fill in the fields. Required ones are marked, and missing ones are listed above the output.
- 4Copy the generated script tag into the page's head or body — either is valid.
- 5Validate it with Google's Rich Results Test and the Schema.org validator before shipping.
Examples
A blog post
- Input
- Headline, author, publish date and image for an Article
- Result
- An Article block with a nested Person author and an ImageObject publisher logo
A local business
- Input
- Name, address, phone and opening hours
- Result
- A LocalBusiness block with a PostalAddress and openingHours in day-code format
The subtype field lets you emit Restaurant, Dentist or Plumber instead of the generic LocalBusiness.
Breadcrumbs
- Input
- Home, Category, This page — with URLs
- Result
- A BreadcrumbList with positioned ListItems, which replaces the raw URL in search results
About the schema markup generator
What structured data does
Search engines read a page as text and infer what it is about. Structured data removes the inference: it states, in a format designed for machines, that this string is a price, that one is a publication date, and this block of text answers that question.
The visible payoff is the rich result — stars, prices, breadcrumbs, event dates. The less visible one matters more over time: it helps a search engine connect a page to an entity it already knows about, which is what a knowledge panel is built from and what makes a brand recognisable across queries.
Choosing a type honestly
The temptation is to mark up as much as possible. Resist it. A type that does not describe the page adds no benefit and creates a mismatch a reviewer can see — and once one type on a site is inaccurate, the rest is trusted less.
The types worth the effort on most sites are few: BreadcrumbList, because it reliably changes what a result looks like; Organization, because it anchors the brand; Article on editorial pages; and LocalBusiness or Product where the page genuinely is one. Everything else is situational.
Validating and maintaining it
Two validators, and they check different things. Google's Rich Results Test tells you whether a page qualifies for a specific rich result and which required fields are missing. The Schema.org validator checks the markup against the vocabulary itself, including properties Google ignores. Passing both is the bar.
After that, the maintenance question is whether the markup stays true. Structured data written by hand goes stale — a price changes, an author leaves, an event passes — and stale markup is inaccurate markup. Generating it from the same data that renders the page is the only approach that stays correct without anyone remembering to check.
Frequently asked questions
Will this get me rich snippets?
Do the values have to appear on the page?
Where in the page should the script tag go?
Should I use JSON-LD, microdata or RDFa?
Can one page have several blocks?
Why are some fields left out of the output?
Related tools
Meta Tag Analyzer
Developer Tools
Audit a page's title, description and social tags from its HTML, with card previews.
Robots.txt Generator
Developer Tools
Build a robots.txt with per-crawler rules, and get it checked for the usual mistakes.
JSON Formatter
Developer Tools
Pretty-print, minify and inspect JSON with precise error positions.