Article or BlogPosting
Any page that is primarily writing with an author and a date. Gets you the headline, image and date treatment, and is what Google Discover reads.
Pick a type, fill in what you have, and get valid JSON-LD. Anything Google requires but you have not filled in is listed as you go.
Schema.org markup is a machine-readable description of what a page is about. Search engines use it to show rich results — star ratings, prices, breadcrumbs, opening hours — and increasingly to decide what an assistant says when someone asks a question your page answers.
JSON-LD is the format Google recommends. It sits in a <script> tag and is completely
separate from your visible markup, which means adding it cannot break your layout and changing your layout
cannot break it. The older microdata approach interleaves attributes with your HTML and is far more fragile.
The markup must describe what is actually on the page. Marking up a five-star rating that appears nowhere, or an FAQ the visitor cannot see, is a structured data violation. Google issues manual actions for it, and recovering from one takes months.
If you want FAQ markup, put a real FAQ on the page. If you want review markup, collect real reviews and display them. The markup describes the page; it does not replace it.
Any page that is primarily writing with an author and a date. Gets you the headline, image and date treatment, and is what Google Discover reads.
A single purchasable item. Price, availability and rating can appear directly in the result, which changes click-through substantially.
Anywhere with an address customers visit. Feeds the map panel and the opening-hours line. Keep it identical to your Google Business Profile.
One per site, on the homepage. Establishes the logo and the official social profiles behind the knowledge panel.
Replaces the raw URL under your title with a readable trail. Low effort, and it applies to every page on a site with any depth to it.
Google narrowed FAQ rich results to government and health sites in 2023. The markup still helps machines understand the page, so it remains worth adding — just do not expect the search treatment.
Several types can coexist on one page. A product page sensibly carries Product, BreadcrumbList and Organization at once — put each in its own script tag, or combine them in an array.
Anywhere in the document. Google reads JSON-LD from the head and the body, and reads it after JavaScript
has run, so client-side injection works too. Before </head> is the conventional spot.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to wash linen without ruining it",
"datePublished": "2026-04-02",
"author": { "@type": "Person", "name": "Ruth Ellery" }
}
<\/script>
Note the escaped closing tag if you are generating this from inside another script. A literal
</script> inside JavaScript ends the enclosing block — one of the oldest gotchas on the web.
Two tools, and they answer different questions.
Google's Rich Results Test tells you whether the page is eligible for a specific rich result and lists any missing required properties. This is the one that matters commercially.
The Schema Markup Validator at validator.schema.org checks the markup against the schema.org vocabulary without any Google-specific opinion. Useful for types Google does not support.
Eligible is not the same as guaranteed. Google decides per query whether to show a rich result, and valid markup only buys you the chance.
It makes you eligible. Google decides whether to show one based on the query, the site's quality and its own judgement, so valid markup is necessary but not sufficient. Breadcrumbs and product prices show up reliably; FAQ rich results largely do not any more.
For most people, yes. Google recommends it, it sits separately from your markup so it cannot break your layout, and it is far easier to generate from a template. Microdata is not deprecated, just more work.
Yes, and you often should. A product page might carry Product, BreadcrumbList and Organization. Use a separate script tag for each, or put them in one array.
Breadcrumbs, yes, on anything with depth. Organization once, on the homepage. The rest only where the page genuinely is that thing. Adding Product markup to a category listing is a misdescription, not a shortcut.
ISO 8601. 2026-04-02 is enough; 2026-04-02T09:00:00+01:00 is better if you have the time and the offset. Anything else is silently ignored.
Indent and structure any HTML file.
OpenTurn minified HTML back into readable code.
OpenPretty-print HTML with the indent you want.
OpenStrip whitespace and comments from HTML.
OpenFind unclosed tags and broken nesting.
OpenTidy exports from CMS and email builders.
OpenLonger reading on formatting, indentation and minification.