Last updated
Schema Markup Validator Examples
The Schema Markup Validator checks JSON-LD, Microdata, and RDFa structured data against schema.org specifications. Below are examples of valid markup, common errors, and rich result eligibility checks.
Valid JSON-LD — Article
A correctly implemented Article schema:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Build a REST API",
"author": {
"@type": "Person",
"name": "Jane Smith"
},
"datePublished": "2026-03-17",
"dateModified": "2026-03-17",
"image": "https://example.com/images/rest-api.jpg",
"publisher": {
"@type": "Organization",
"name": "TechBlog",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
}
}
</script>
Validation result: ✓ Valid
Rich results eligible: Article rich result ✓
Common Error — Missing Required Property
Validation error:
ERROR: Missing required property "headline"
The Article type requires: headline, author, datePublished, image, publisher
Missing: headline
Fix: Add "headline": "Your Article Title"
Common Error — Invalid Date Format
Markup:
"datePublished": "March 17, 2026"
Validation error:
ERROR: Invalid date format for "datePublished"
Expected: ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ)
Found: "March 17, 2026"
Fix: "datePublished": "2026-03-17"
Valid JSON-LD — Product with Rich Result
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Bluetooth Headphones",
"image": "https://example.com/images/headphones.jpg",
"description": "Premium wireless headphones with 30-hour battery life.",
"brand": {
"@type": "Brand",
"name": "AudioPro"
},
"offers": {
"@type": "Offer",
"price": "79.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/headphones"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "127"
}
}
</script>
Validation result: ✓ Valid
Rich results eligible:
✓ Product rich result (price, availability)
✓ Review snippet (star rating)
Valid JSON-LD — FAQ
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is a REST API?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A REST API is an architectural style for building web services that use HTTP methods to perform operations on resources."
}
},
{
"@type": "Question",
"name": "What HTTP methods does REST use?",
"acceptedAnswer": {
"@type": "Answer",
"text": "REST APIs use GET (read), POST (create), PUT (update), PATCH (partial update), and DELETE (remove) methods."
}
}
]
}
</script>
Validation result: ✓ Valid
Rich results eligible: ✓ FAQ rich result (expandable Q&A in search results)
Valid JSON-LD — Local Business
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "The Corner Bistro",
"address": {
"@type": "PostalAddress",
"streetAddress": "742 Maple Street",
"addressLocality": "Portland",
"addressRegion": "OR",
"postalCode": "97201",
"addressCountry": "US"
},
"telephone": "+1-503-555-0147",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "11:00",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday", "Sunday"],
"opens": "10:00",
"closes": "23:00"
}
],
"servesCuisine": "American",
"priceRange": "$$"
}
</script>
Validation result: ✓ Valid
Rich results eligible: ✓ Local business rich result
Rich Result Eligibility Check — Recipe
Current markup has:
✓ name
✓ image
✓ description
✓ recipeIngredient
✗ recipeInstructions (MISSING — required for rich result)
✗ totalTime (recommended)
✗ nutrition (recommended)
Rich result status: ✗ Not eligible
Reason: recipeInstructions is required for Recipe rich results
Fix:
"recipeInstructions": [
{
"@type": "HowToStep",
"text": "Preheat oven to 375°F."
},
{
"@type": "HowToStep",
"text": "Mix dry ingredients in a bowl."
}
]
Nested Type Validation
Validation of nested types in a Product schema:
Product ✓
└── Offer ✓
├── price: "79.99" ✓
├── priceCurrency: "USD" ✓
└── availability: "https://schema.org/InStock" ✓
└── AggregateRating ✓
├── ratingValue: "4.5" ✓ (must be 0-5)
└── reviewCount: "127" ✓
└── Brand ✓
└── name: "AudioPro" ✓
All nested types valid.
Content Mismatch Warning
Validation warning:
WARNING: Structured data may not match page content
Schema claims: "aggregateRating": { "ratingValue": "4.5", "reviewCount": "127" }
Page content: No visible reviews or ratings found on page
Google may ignore or penalize structured data that describes
content not present on the page. Add visible reviews to the page
or remove the aggregateRating from the schema.
- Validate JSON-LD, Microdata, and RDFa against schema.org specs
- Check for missing required properties with specific fix instructions
- Validate date formats (ISO 8601 required)
- Rich result eligibility check for each schema type
- Nested type validation (Product → Offer → AggregateRating)
- Content mismatch detection to avoid search penalties
- JSON-LD syntax validation beyond schema.org compliance
- Type-specific requirements for FAQ, Recipe, Product, LocalBusiness