Validating Structured Data for Search
You’ve added structured data to your pages. But is it actually working? Invalid markup—missing properties, syntax errors, wrong types—gets ignored by search engines. Your FAQ won’t get dropdowns. Your products won’t show prices and ratings.
Validation catches these issues before they cost you rich results.
Why Validation Matters
Structured data can fail silently. Unlike JavaScript errors that break functionality, invalid JSON-LD just… doesn’t work. Search engines skip it without notification.
Common failure modes:
- Syntax errors: Broken JSON that doesn’t parse
- Missing required properties: Schema types need specific fields
- Wrong data types: String where number expected
- Outdated schemas: Using deprecated properties
- Logic errors: Valid syntax but incorrect usage
Types of Errors
Syntax Errors
JSON must be valid before schema.org matters:
// Missing comma - won't parse
{
"name": "Product"
"price": 99.99
}
// Trailing comma - won't parse
{
"name": "Product",
"price": 99.99,
}
// Single quotes - won't parse
{
'name': 'Product'
}
These break completely—no structured data is recognized.
Missing Required Properties
Each schema type has required properties for rich results:
Product requires:
- name
- offers (with price and priceCurrency)
FAQPage requires:
- mainEntity (array of Question objects)
Recipe requires:
- name
- image
Without required properties, Google won’t display rich results.
Wrong Property Types
Properties expect specific data types:
// Wrong - price should be a number or string
"price": {
"amount": 99.99
}
// Correct
"price": "99.99"
Invalid URLs
URL properties must be valid:
// Invalid
"url": "example.com/page"
// Valid
"url": "https://example.com/page"
Deprecated Properties
Schema.org evolves. Some properties are deprecated:
// Deprecated
"aggregateRating": {
"ratingCount": 50
}
// Current
"aggregateRating": {
"reviewCount": 50
}
Validation Tools
Google Rich Results Test
Google’s official tool for testing rich result eligibility:
- Checks if markup is detected
- Shows which rich results are eligible
- Identifies errors and warnings
- Renders mobile and desktop
Limitations:
- Only tests one URL at a time
- Must be publicly accessible
- Focuses on Google-specific requirements
Schema.org Validator
Validates against the schema.org specification:
- More comprehensive than Google’s tool
- Catches issues Google might not surface
- Useful for non-Google use cases
Our Schema Validator
The Schema Validator provides:
- All structured data found on the page
- Schema type identification
- Property completeness check
- Error and warning messages
- Recommendations for improvement
It’s free and works on any URL—useful for quick checks without switching between tools.
In-Browser Testing
During development, validate JSON syntax:
try {
JSON.parse(yourJsonLd);
console.log('Valid JSON');
} catch (e) {
console.error('Invalid JSON:', e.message);
}
Common Issues by Schema Type
Article / BlogPosting
Common errors:
- Missing
author(should be Person or Organization) - Missing
datePublished imageas string instead of ImageObject or array
Correct structure:
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Article Title",
"image": ["https://example.com/image.jpg"],
"datePublished": "2026-04-06",
"author": {
"@type": "Organization",
"name": "Company Name"
}
}
Product
Common errors:
- Missing
offers pricewithoutpriceCurrencyavailabilityusing custom strings instead of schema.org URLs
Correct structure:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Product Name",
"offers": {
"@type": "Offer",
"price": "99.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
FAQPage
Common errors:
- Questions not wrapped in
mainEntity - Missing
acceptedAnswerwithin questions textproperty missing from answers
Correct structure:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is the question?",
"acceptedAnswer": {
"@type": "Answer",
"text": "This is the answer."
}
}
]
}
LocalBusiness
Common errors:
- Missing
address addressas string instead of PostalAddress object- Missing or malformed
openingHours
Correct structure:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Business Name",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "City",
"addressRegion": "State",
"postalCode": "12345"
}
}
Validation Workflow
During Development
- Write structured data
- Validate JSON syntax
- Test with Schema Validator
- Fix any errors
- Test with Google Rich Results Test
- Deploy
After Deployment
- Monitor Search Console for structured data errors
- Re-validate after content changes
- Check competitor pages for schema ideas
- Update schemas when Google requirements change
Regular Audits
- Crawl site to extract all structured data
- Batch validate
- Prioritize fixes by page importance
- Track eligible vs. actual rich results
Debugging Tips
View Source vs Rendered HTML
Some structured data is injected by JavaScript. Use:
- “View Page Source” for static HTML
- DevTools → Sources for JavaScript-injected
- Rich Results Test renders JavaScript
Check for Multiple Schemas
Pages can have multiple JSON-LD blocks. Ensure:
- No conflicts between them
- All are valid independently
- They complement rather than contradict
Test Production, Not Just Development
Development environments may:
- Use different URLs
- Missing assets
- Have placeholder content
Validate the production URL.
Warnings vs Errors
Errors
Must be fixed. Rich results won’t appear.
Example: Missing required property
Warnings
Should be fixed. Rich results may appear but won’t be optimal.
Example: Recommended property missing
Best Practices
No effect on eligibility, but improve quality.
Example: Image resolution recommendations
Prioritize errors, then warnings, then best practices.
Schema Generation vs Validation
Generation
Create structured data from scratch:
- Use our Schema Generator for common types
- Ensures correct structure from the start
- Reduces validation issues
Validation
Check existing structured data:
- Find issues after implementation
- Verify third-party implementations
- Audit site-wide
Both are valuable at different stages.
Staying Current
Structured data requirements change:
- Google updates rich result requirements
- schema.org releases new versions
- New rich result types appear
Monitor:
- Google Search Central blog
- Google Search Console warnings
- Periodic re-validation of key pages
Take Action
- Validate your key pages with Schema Validator
- Fix any errors
- Use Schema Generator for missing schemas
- Test with Google Rich Results Test
- Monitor Search Console for ongoing issues
For help with structured data implementation or SEO strategy, reach out.
Need help shipping?
We help teams build and ship software that works. Performance, SEO, features — weekly demos, full ownership.
Get a Free Audit