Schema markup (structured data) describes a page to search engines in a machine-readable way: this is an article, this is a product with a price, this is a business with opening hours. Adding it is half the job. The other half is checking that it is present, valid and matches what visitors see.
If you are new to the topic, start with structured data and JSON-LD for beginners.
Step 1: see what a page declares
View the source. Search for application/ld+json. Each match is a block of JSON-LD:
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "Article", ... }
</script>
Older sites use Microdata or RDFa instead, which are attributes spread across the HTML (itemscope, itemtype, property). They are harder to spot by eye, which is why a tool helps.
Use a command. This lists every JSON-LD block and type found, and flags missing properties:
curl seoloop.in/schema/example.com/some-page
Real output for one of our own posts:
1 JSON-LD block(s), 2 typed item(s)
BlogPosting ok
BreadcrumbList ok
If a type shows missing properties, the output names them, so you know what to add.
Check the rendered page, too. Some sites inject schema with JavaScript, so it is absent from the raw HTML. Google renders JavaScript and can still read it, but the raw check will report nothing. If results differ, trust the rendered view.
Step 2: validate it
Presence is not validity. Run the page through the official testers:
- Rich Results Test (Google). Shows which rich results the page is eligible for, with errors and warnings. Use it for anything Google displays specially.
- Schema Markup Validator (schema.org). Checks the markup against the full vocabulary, including types Google does not show as rich results.
Treat errors as must-fix and warnings as optional improvements.
Step 3: check it matches the page
This is the step people skip. Structured data must describe content visitors can see. Common mismatches:
- A price in the markup that differs from the price on the page
- Review stars in the markup for reviews that are not shown
- An author or date that does not match the byline
- FAQ markup for questions that are not on the page
Mismatched markup can lead to a manual action, which removes rich results for the whole site.
Step 4: monitor it
In Google Search Console, the Enhancements section lists each structured data type Google found, with counts of valid items, warnings and errors. Check it after any template change, because one broken template can break every page that uses it at once.
Frequent problems
| Problem | Fix |
|---|---|
Missing required property (for example image or offers) | Add it, then retest |
| Invalid JSON (a trailing comma or unescaped quote) | Validate the JSON itself first |
Wrong @type for the page | Pick the most specific valid type |
| Duplicate blocks from a theme and a plugin | Keep one source of truth |
| Markup for hidden or absent content | Remove it, or show the content |
Checklist
- JSON-LD present on the rendered page
- Right type for the page, required properties filled
- Passes the Rich Results Test with no errors
- Every value matches visible content
- Search Console shows no new errors after changes