You've added schema markup to your site. But how do you know it's actually working?
Testing your structured data is the step most people skip — and the reason most schema markup never triggers rich results. Invalid JSON, missing required fields, or subtle formatting errors can silently prevent Google from using your markup.
This guide covers everything you need to know about testing schema markup, from quick validation checks to comprehensive audits.
Why testing schema markup matters
Google ignores invalid structured data. There's no error message in search results, no notification in Search Console (unless it's a critical issue), and no way to tell from the SERP that your markup isn't working.
Common issues that prevent rich results:
- Missing required fields (like
imageon Article orofferson Product) - Invalid JSON syntax (trailing commas, unescaped quotes)
- Wrong
@contextURL (usinghttpinstead ofhttps) - Nested objects missing their own
@type - Array fields containing a single object instead of an array
The only way to catch these issues is to validate your markup before and after deployment.
Method 1: Validate a live URL
The fastest way to check your schema markup is to validate the live URL. This tests exactly what Google sees when it crawls your page.
Free Schema Markup Validator
Check your structured data for errors, warnings, and rich result eligibility. No sign-up required.
Enter your page URL, and the validator extracts all JSON-LD blocks from the page, checks each one against Schema.org requirements and Google's rich result guidelines, and shows you errors, warnings, and a completeness score.
This method catches issues that code-only validation misses:
- JSON-LD blocks that aren't rendering (template errors)
- Multiple schemas conflicting with each other
- Schemas injected by plugins that override your custom markup
Method 2: Validate JSON-LD code
If you're writing schema markup before deploying it, validate the raw JSON-LD first. This catches syntax errors and missing fields before they reach production.
Use the "Validate Code" tab in our Schema Validator to paste raw JSON-LD. It handles single objects, arrays, and @graph containers.
Always validate your JSON-LD code before deployment AND validate the live URL after deployment. Template rendering issues can introduce errors that don't exist in the raw code.
Method 3: Google's Rich Results Test
Google's Rich Results Test is the official tool for checking whether your page qualifies for rich results. It's useful as a final check, but it only validates against Google's subset of Schema.org — not the full specification.
Limitations:
- Only checks rich result eligibility, not completeness
- Doesn't show a completeness score
- Doesn't validate schema types that don't have rich results (like Service or Person)
- Can be slow for pages with many schemas
Use it alongside our validator for the most comprehensive check.
Method 4: Google Search Console
Search Console's Enhancements report shows structured data issues that Google has found while crawling your site. This is the most authoritative source for understanding how Google interprets your markup.
The downside: it only reports issues after Google has crawled the page, which can take days or weeks. It's not a replacement for pre-deployment validation.
What to check in your schema markup
Required vs. recommended fields
Every schema type has required and recommended fields. Required fields must be present for the schema to be valid. Recommended fields improve your chances of getting rich results.
For example, Article schema requires:
headlineimagedatePublishedauthor(withname)
And recommends:
dateModifiedpublisherdescriptionmainEntityOfPage
Our validator scores completeness based on both required and recommended fields, weighted so required fields count more.
JSON syntax
Common JSON errors that break schema markup:
// Trailing comma (invalid)
{
"@type": "Article",
"headline": "My Article",
}
// Unescaped quotes (invalid)
{
"@type": "Article",
"headline": "She said "hello""
}
// Single quotes (invalid)
{
'@type': 'Article',
'headline': 'My Article'
}
@context and @type
Every JSON-LD block needs:
{
"@context": "https://schema.org",
"@type": "YourSchemaType"
}
Use https://schema.org (not http://). While Google accepts both, https is the canonical form.
Nested objects
When a property expects an object (like author on Article), the nested object should include its own @type:
{
"@context": "https://schema.org",
"@type": "Article",
"author": {
"@type": "Person",
"name": "Jane Smith"
}
}
Testing schema markup at scale
Validating individual URLs works for small sites. For larger sites (50+ pages), you need automated validation.
Stop writing schema markup by hand
Schema Pilot scans your pages, generates valid JSON-LD, and serves it automatically. No code changes required.
Schema Pilot scans your entire sitemap, generates valid JSON-LD for every page, validates it automatically, and serves it via a lightweight embed script. No manual testing needed — every page gets valid, complete schema markup by default.
Common schema markup errors and fixes
| Error | Fix |
|---|---|
Missing @context | Add "@context": "https://schema.org" |
Missing @type | Add "@type": "YourSchemaType" |
| Missing required field | Add the field with a valid value |
| Invalid JSON | Fix syntax (commas, quotes, brackets) |
| Wrong URL format | Use full URLs starting with https:// |
Missing nested @type | Add @type to nested objects |
Next steps
- Validate your site now with our free tool
- Fix any errors and warnings
- Re-validate after deployment
- Monitor Search Console for ongoing issues
Schema markup is only useful if it's valid. Make validation part of your deployment process, and you'll consistently qualify for rich results.