What is schema markup?
Schema markup, or structured data, is code that describes what a page is about using the shared vocabulary at schema.org: this page is a local business, here is its address and phone number; this is a product, here is its price. Search engines use it to understand the page and, for some types, to show extra detail in results.
Most sites add it as JSON-LD, a block of JSON inside a script tag. A plumber's homepage might carry something like this:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Example Plumbing Ltd",
"telephone": "+44 113 496 0000",
"address": {
"@type": "PostalAddress",
"addressLocality": "Leeds",
"addressCountry": "GB"
}
}
</script>Google supports three formats, JSON-LD, Microdata and RDFa, and recommends JSON-LD because it is the easiest to add and maintain.
What this checker does, and what it doesn't
It fetches the page once, as your server first sends it, finds the JSON-LD blocks, checks that each one parses as JSON and lists the schema types they declare. For a few common types (Organization, LocalBusiness and its common subtypes, Product, Article, BreadcrumbList, WebSite and FAQPage) it also flags key properties that are missing. Microdata and RDFa are spotted and their types listed, but not checked in detail.
It doesn't:
- run JavaScript, so markup added by a tag manager or script after the page loads won’t show here (Google may still see it, so test those pages in the Rich Results Test);
- check every rule for every rich result type, which is what Google’s test is for;
- check that the markup matches what visitors can see on the page.
Common schema problems and how to fix them
- JSON that won't parse. Usually a comma after the last item, curly “smart” quotes pasted from a word processor, or an unescaped quote mark inside a value. Regenerate the block from your plugin, or fix it in a plain-text editor.
- No schema at all. SEO plugins such as Yoast and Rank Math add Organization, WebSite and BreadcrumbList for you. A local business should add LocalBusiness, or a more specific type, on its homepage or contact page.
- A type that's too general. Use the most specific type schema.org has, such as
Plumber,DentistorRestaurant, rather than plainLocalBusiness. - Markup that doesn't match the page. Google's guidelines say not to mark up content visitors can't see. Don't describe reviews, prices or questions that aren't on the page.
- Two sources saying different things. A theme and a plugin can both output Organization with different names or logos. Keep one source.