Schema markup can significantly boost your search visibility, but only when implemented correctly. Unfortunately, many websites make critical mistakes that prevent rich results or, worse, can lead to manual penalties.
Let’s explore the most common schema markup mistakes and how to avoid them.
1. Marking Up Invisible Content
The Mistake
Adding schema for content that isn’t visible on the page:
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Hidden question not on page",
"acceptedAnswer": {
"@type": "Answer",
"text": "Hidden answer"
}
}
]
}
Why It’s Wrong
Google requires that structured data reflects visible content. Schema for hidden content is considered spammy.
The Fix
Only mark up content that users can see:
// Only include FAQs that appear on the page
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Question visible on page",
"acceptedAnswer": {
"@type": "Answer",
"text": "Answer visible on page"
}
}
]
}
2. Mismatched Data
The Mistake
Schema data that doesn’t match visible content:
Page shows: $99.99 Schema says: “price”: 79.99
Why It’s Wrong
Inconsistencies between schema and visible content are misleading and violate Google’s guidelines.
The Fix
Ensure perfect alignment between schema and displayed content:
// If page shows $99.99
{
"@type": "Offer",
"price": 99.99,
"priceCurrency": "USD"
}
3. Using Wrong Schema Types
The Mistake
Using a schema type that doesn’t match the content:
// Using Product schema for a service
{
"@type": "Product",
"name": "Website Design Services"
}
Why It’s Wrong
Services aren’t products. Using incorrect types confuses search engines and may not generate appropriate rich results.
The Fix
Use the appropriate schema type:
// For services, use Service schema
{
"@type": "Service",
"name": "Website Design Services",
"provider": {
"@type": "Organization",
"name": "Design Agency"
}
}
4. Fake or Manipulated Reviews
The Mistake
Adding fake reviews or inflating ratings:
{
"@type": "Product",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 5, // Fake perfect score
"reviewCount": 1000 // Fake count
}
}
Why It’s Wrong
This is spam. Google actively penalizes sites with fake review markup, potentially removing all rich results.
The Fix
Only include genuine reviews from real customers:
{
"@type": "Product",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.3, // Actual rating
"reviewCount": 47 // Actual count
}
}
5. Missing Required Properties
The Mistake
Omitting properties that Google requires:
{
"@type": "Article",
"headline": "Article Title"
// Missing: image, datePublished, author
}
Why It’s Wrong
Missing required properties prevents rich result eligibility.
The Fix
Include all required properties:
{
"@type": "Article",
"headline": "Article Title",
"image": "https://example.com/image.jpg",
"datePublished": "2025-01-15",
"author": {
"@type": "Person",
"name": "Author Name"
}
}
6. Incorrect Date Formats
The Mistake
Using human-readable dates:
{
"datePublished": "January 15, 2025",
"dateModified": "Last week"
}
Why It’s Wrong
Machines can’t parse these formats. Schema requires ISO 8601.
The Fix
Use ISO 8601 format:
{
"datePublished": "2025-01-15T08:00:00+00:00",
"dateModified": "2025-01-20T14:30:00+00:00"
}
7. Invalid JSON Syntax
The Mistake
JSON syntax errors that break parsing:
{
"@type": "Product",
"name": "Product Name" // Missing comma
"price": 99.99
}
Why It’s Wrong
Browsers can’t parse invalid JSON, so the schema is completely ignored.
The Fix
Validate JSON syntax:
{
"@type": "Product",
"name": "Product Name",
"price": 99.99
}
Use a JSON validator before deployment.
8. Duplicate Schema Without Purpose
The Mistake
Adding the same schema multiple times:
<script type="application/ld+json">{"@type": "Organization", "name": "Company"}</script>
<script type="application/ld+json">{"@type": "Organization", "name": "Company"}</script>
Why It’s Wrong
Duplicate schema clutters your page and can create conflicts.
The Fix
Include each schema entity once:
<script type="application/ld+json">{"@type": "Organization", "name": "Company"}</script>
9. Self-Serving FAQ Schema
The Mistake
Using FAQ schema for promotional content:
{
"@type": "Question",
"name": "Why are we the best company?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We are the best because of our amazing services..."
}
}
Why It’s Wrong
FAQs should be genuinely helpful questions, not marketing material.
The Fix
Use real questions users ask:
{
"@type": "Question",
"name": "What are your business hours?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We are open Monday-Friday 9am-5pm."
}
}
10. Outdated Information
The Mistake
Leaving old data in schema:
{
"@type": "Event",
"startDate": "2024-01-15", // Past date
"eventStatus": "EventScheduled"
}
Why It’s Wrong
Outdated information is misleading and may result in penalties.
The Fix
Keep schema current:
{
"@type": "Event",
"startDate": "2025-06-15",
"eventStatus": "EventScheduled"
}
Or remove schema for past events.
11. Using Microdata and JSON-LD Together Incorrectly
The Mistake
Conflicting data between formats:
<!-- Microdata says $99 -->
<span itemprop="price">$99</span>
<!-- JSON-LD says $79 -->
<script type="application/ld+json">
{"price": 79}
</script>
Why It’s Wrong
Conflicting information confuses search engines.
The Fix
Use one format (preferably JSON-LD) consistently:
<script type="application/ld+json">
{"price": 99, "priceCurrency": "USD"}
</script>
12. Spammy Aggregate Ratings
The Mistake
Adding ratings to pages that shouldn’t have them:
// On a homepage
{
"@type": "Organization",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 5,
"reviewCount": 500
}
}
Why It’s Wrong
Google has cracked down on aggregate ratings that aren’t for specific items being reviewed on that page.
The Fix
Only use aggregate ratings for:
- Products on product pages
- Recipes on recipe pages
- Local businesses (with legitimate reviews)
13. Ignoring Google’s Specific Guidelines
The Mistake
Following Schema.org but not Google’s additional requirements.
Why It’s Wrong
Schema.org defines the vocabulary, but Google has specific requirements for rich results.
The Fix
Always check Google’s structured data documentation for each schema type:
- Required vs recommended properties
- Image size requirements
- Content guidelines
How to Avoid These Mistakes
1. Always Validate
Use Google Rich Results Test before and after deployment.
2. Match Visible Content
Every piece of schema data should correspond to visible page content.
3. Use a Generator
Our JSON-LD Schema Generator creates valid, properly formatted schema.
4. Monitor Search Console
Check the Enhancements section regularly for errors.
5. Stay Updated
Google updates requirements periodically. Follow Search Central blog.
Conclusion
Schema markup mistakes range from minor issues that prevent rich results to serious violations that can result in penalties. The key principles are:
- Accuracy - Schema must match visible content
- Honesty - No fake reviews or manipulated data
- Relevance - Use appropriate schema types
- Currency - Keep information up to date
Use validation tools, follow guidelines, and monitor your structured data regularly. When in doubt, less is more—it’s better to have minimal accurate schema than comprehensive but flawed markup.
Need help auditing your schema markup? I can review your structured data and identify issues before they become problems. Get in touch for a consultation.