How to Fix Duplicate Schema Markup Errors (WordPress Plugin Conflicts)

Last Updated: January 31, 2026 • 7 min read

⚠️ Quick Fix (TL;DR)

Multiple schema markup for the same content? Here's what to do:

  1. Find which plugins/theme are adding schema (view page source)
  2. Pick ONE source to keep (usually your SEO plugin)
  3. Disable schema in the others
  4. Clear cache and validate with our Schema Validator

Last week, a client sent me their product page to debug. "Google Search Console says I have errors," they said. I opened the page source and counted SIX different Product schema blocks. Six! All saying slightly different things about the same product.

The culprits? Yoast SEO, WooCommerce, their WordPress theme, a "Schema Pro" plugin they forgot they installed, some custom code their previous developer added, and—get this—a page builder that also outputs schema. It was a mess.

If Google Search Console is throwing "duplicate schema" errors at you, or your rich results disappeared after installing a new plugin, you're in the right place. Let's fix this.

Why Duplicate Schema Is a Problem

You might think "more schema = better," right? Wrong. Here's what actually happens when you have duplicates:

❌ Google Gets Confused

One schema says price is $50, another says $49.99. Which does Google trust? Neither. It might ignore both.

❌ Rich Results Get Disabled

Conflicting information triggers Google's spam filters. You had star ratings showing, installed one plugin, boom—gone.

❌ Search Console Errors Pile Up

"Missing required field" on one, "Invalid value" on another. You fix one schema, the other still throws errors.

❌ Page Load Slows Down

Six schema blocks = unnecessary code bloat. Your pages load slower for no benefit.

Step 1: Find All Your Schema Sources

First, you need to identify who's adding schema to your pages. Here's how:

Diagnosis Method:

  1. Open your problematic page (e.g., a product page)
  2. Right-click → "View Page Source" (or press Ctrl+U / Cmd+U)
  3. Press Ctrl+F / Cmd+F and search for: application/ld+json
  4. Count how many times it appears
  5. Look above each occurrence—there's usually a comment telling you the source

You'll see comments like:

<!-- Schema added by Yoast SEO -->
<script type="application/ld+json">
...
</script>

<!-- Schema added by WooCommerce -->
<script type="application/ld+json">
...
</script>

<!-- Schema added by Astra Theme -->
<script type="application/ld+json">
...
</script>

Make a list. You might find schema from:

  • WordPress SEO plugins (Yoast, RankMath, All in One SEO)
  • E-commerce plugins (WooCommerce, Easy Digital Downloads)
  • Your WordPress theme
  • Page builders (Elementor, Divi, Beaver Builder)
  • Dedicated schema plugins (Schema Pro, Schema & Structured Data)
  • Custom code in functions.php or child theme

Step 2: Decide Which Schema to Keep

Now the hard part: choosing your primary schema source. Here's my decision framework:

Priority Order (Keep the Highest):

1.

Custom Schema You Manually Coded

If you (or your developer) wrote specific schema for your content, keep that. It's tailored to your needs.

2.

Dedicated Schema Plugin

Schema Pro, Schema & Structured Data—these do ONE thing well. Usually the most complete schema.

3.

SEO Plugin (Yoast/RankMath)

Good general schema. Easy to configure. Works for most sites.

4.

E-commerce Plugin (WooCommerce)

Fine for basic product schema, but often missing optional fields.

5.

Theme Schema

Usually basic. Hard to customize. Disable this first.

💡 Pro Tip:

Paste each schema version into our Schema Validator. The one with the fewest errors and most complete data? Keep that one.

Step 3: Disable Schema in the Losers

Now let's turn off schema in everything except your chosen winner. Here's how for common sources:

Yoast SEO

  1. Go to WordPress Admin → SEO → Search Appearance
  2. Click each content type tab (Posts, Pages, Products, etc.)
  3. Scroll to "Schema" section
  4. Set "Show X in search results" to OFF
  5. Save changes

Note: This doesn't disable ALL Yoast schema (Organization/Website schema still outputs). For complete removal, use the Yoast SEO → Features → Advanced settings → Schema.

RankMath

  1. Rank Math → General Settings → Breadcrumbs
  2. Toggle OFF "Enable Breadcrumbs Function"
  3. Rank Math → Schema → Products (or relevant type)
  4. Disable schema output for that type
  5. Save

WooCommerce

  1. Add this to your child theme's functions.php:
// Disable WooCommerce schema
remove_action('woocommerce_before_main_content', 'woocommerce_output_structured_data', 10);

Alternatively, use a plugin like "Disable WooCommerce Schema" (search WordPress.org plugins).

WordPress Theme

Check your theme settings (Appearance → Customize or Theme Settings). Look for:

  • "Schema Markup" toggle
  • "Structured Data" options
  • "SEO" section

If your theme doesn't have a disable option, you might need to edit theme files or switch themes.

Page Builders (Elementor, Divi)

Elementor: Settings → Features → Disable "Structured Data"

Divi: Theme Options → Builder → Advanced → Toggle off schema options

Step 4: Clear All Caches

This is CRITICAL. You can disable schema in settings all day, but if your cache serves the old version, nothing changes.

Clear These Caches (All of Them!):

  • WordPress cache plugin (WP Rocket, W3 Total Cache, etc.)
  • Server cache (cPanel, hosting control panel)
  • CDN cache (Cloudflare, StackPath)
  • Browser cache (Ctrl+Shift+R / Cmd+Shift+R)
  • Object cache if you use Redis/Memcached

Then wait 5 minutes. Seriously. Let everything propagate.

Step 5: Validate the Fix

Now let's make sure the duplicates are actually gone:

Validation Checklist:

View page source again. Search for "application/ld+json". Should only appear once (or once per schema type if you have multiple types).

Paste URL into our Schema Validator. No "duplicate" errors should appear.

Check Google Rich Results Test. Should show ONE valid schema block, not multiple.

Request reindexing in Google Search Console (URL Inspection tool → Request Indexing).

Monitor GSC Enhancements section over next 1-2 weeks. Errors should disappear.

Common Duplicate Schema Scenarios (and Fixes)

Scenario: "I switched from Yoast to RankMath, now I have both"

Fix: Deactivate (not just disable) Yoast. Go to Plugins → Deactivate Yoast SEO. RankMath should be the only active SEO plugin. Clear cache.

Scenario: "WooCommerce + theme both add Product schema"

Fix: Disable theme schema first (it's usually less complete). If theme doesn't have a toggle, disable WooCommerce schema instead using the code snippet above.

Scenario: "I installed a schema plugin but my theme already had schema"

Fix: Keep the plugin schema (it's more customizable). Disable theme schema. If theme won't let you, consider switching themes or adding custom CSS to hide the theme's schema output (not ideal but works).

Scenario: "I have custom code AND a plugin both adding Organization schema"

Fix: Compare both. If your custom code is more detailed and correct, keep that and disable the plugin's Organization schema. If plugin is better, remove your custom code from functions.php.

Prevention: How to Avoid This in the Future

Golden Rules:

  • One schema source per schema type. Use one plugin/theme for Organization schema, one for Product schema, etc.
  • Check before installing. Before activating a new plugin, check if it outputs schema. If yes, and you already have schema, disable one.
  • Document your setup. Keep a note: "Using RankMath for all schema except Products (WooCommerce handles those)."
  • Validate after updates. Every time you update theme/plugins, quickly validate one page to ensure no new schema appeared.

Frequently Asked Questions

Is duplicate schema bad for SEO?

Yes! Duplicate schema confuses Google and can prevent rich results from showing. Google doesn't know which schema to trust when there are multiple versions of the same data. This can lead to your structured data being ignored entirely or triggering errors in Google Search Console.

Can I use Yoast and RankMath at the same time?

No, you should never run Yoast SEO and RankMath together. Both add schema markup, resulting in duplicates. Choose one and deactivate the other. If you're switching, disable schema output in the old plugin before activating the new one.

How do I know which duplicate schema to keep?

Keep the most complete and accurate version. Compare each duplicate: which has more required fields? Which matches your visible content better? Which is easier for you to maintain? Generally, keep plugin-generated schema over theme schema, and manual schema over automatic schema if you've customized it properly.

Will removing duplicate schema hurt my rankings?

No! Removing duplicates actually HELPS. You're cleaning up conflicting signals to Google. Your remaining schema will work better, potentially improving your rich results and click-through rates.

What if I can't disable schema in my theme?

If your theme doesn't provide a toggle to disable schema, you have three options: 1) Switch to a theme that does, 2) Ask theme support for a code snippet to disable it, 3) Use a child theme and override the schema function with an empty function.

How long after fixing duplicates will rich results appear?

After removing duplicates and requesting reindexing, Google typically takes 1-3 weeks to process the changes. Monitor your Google Search Console Enhancements section for updates. Be patient—the fix is working, it just takes time.

The Bottom Line

Duplicate schema is one of the most common and most fixable SEO issues. It usually happens when you install multiple plugins that all try to help, or when your theme comes with schema built-in and you add more on top.

The solution is simple: choose one primary source, disable the rest, clear cache, and validate. Most duplicate schema issues are fixed within an hour once you know what to do.

Still seeing duplicates? Our Schema Validator will show you exactly which schema blocks are on your page and highlight any duplicates.