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.