Home / Guides / Duplicate schema
TroubleshootingDuplicate schema in WordPress: how to find and fix it
By Anis Harbaoui, SEO specialist · Updated 16 October 2026
Duplicate schema happens when two sources, usually two SEO plugins or a plugin and the theme, each print their own JSON-LD for the same page. The result is two Organization entities, two WebSite entities and sometimes two authors, with different @id values Google cannot merge with certainty. The fix: keep one source of structured data and switch off every other.

- Count
application/ld+jsonblocks in the page source. - Themes and leftover plugins are the usual culprits.
- Two Product nodes with different prices can block merchant features.
Why is duplicate schema a problem?
Google does not reject a page with two graphs, but it must decide which facts to trust. If one block names the publisher “Example” and the other “example.com”, you created a conflict. Duplicate Product nodes are worse: two prices or availabilities can make the item ineligible.
How to find duplicate schema
- Open the page source and search for
application/ld+json. Count the blocks. - Identify which plugin or theme printed each one.
- Run the URL through the Schema Markup Validator and look for repeated types.
- Repeat on home, post, page and product templates.
Common sources and fixes
| Source | Typical output | Fix |
|---|---|---|
| Second SEO plugin left active | Full graph with its own @id values | Deactivate after import (see the migration checklist) |
| Theme hard-coding JSON-LD | Organization or SoftwareApplication without @id | Remove in a child theme; move data into the plugin |
| WooCommerce native structured data | Separate Product block | Let one plugin handle Product schema |
| Review, recipe or event plugins | Standalone typed blocks | Keep only if they add a type your SEO plugin lacks |
What a clean result looks like
One @graph per page: exactly one Organization (or Person), one WebSite, one WebPage and one main content entity, all referencing each other by @id.
Further reading: Schema Markup Validator explained.
Which duplicates are harmless and which are not?
Seeing several JSON-LD blocks on one page is normal. A theme can print a WebSite block, an SEO plugin an Organization block and a shop plugin a Product block, and nothing is wrong as long as each block describes a different thing. The trouble starts when two blocks describe the same thing and disagree.
| Situation | Risk | What to do |
|---|---|---|
| Two blocks, same type, same values | Low. Redundant but consistent. | Remove one anyway to keep the page lean. |
| Same type, different values (name, price, author) | High. Google has to pick one. | Keep one source and switch the other off. |
| Different types that point at each other with @id | None. This is how a graph works. | Leave it, and check the @id values match. |
| Microdata from the theme plus JSON-LD from a plugin | Medium. Two formats for the same content. | Keep the JSON-LD and remove the theme microdata. |
How do I stop two plugins printing the same schema?
Pick one owner for each kind of markup. Usually your SEO plugin owns Organization, WebSite, WebPage and breadcrumbs, while a shop or review plugin owns Product, Review and Recipe. Then switch off the overlapping output in the other place. Most themes have a setting for schema or breadcrumbs, and most SEO plugins let you disable a module.
If a theme has no switch, a child theme with a small filter is safer than editing the parent theme, because an update overwrites that. After any change, clear your page cache. A cached copy can keep serving the old markup for days and make it look as if nothing changed.
What about duplicate Product schema in WooCommerce?
WooCommerce prints its own Product markup on product pages, and many SEO plugins print one as well. With both active you can end up with two Product nodes, each with its own price and availability. Open a product page, count the Product types in the source, and keep the node that carries the correct price, stock status and reviews. Then test the URL in the Rich Results Test and confirm that only one Product is detected.
Frequently asked questions
Can I run Yoast and NexalSEO together?
Not for structured data. Import settings into one plugin, then deactivate the other.
Will duplicate schema cause a penalty?
No penalty as such, but conflicting facts reduce trust in your markup and can block rich results.
Related guides
What is schema markup?
The full structured data guide.
Organization schema explained
One identity node.
Switching SEO plugins
Migrate safely.
Because NexalSEO outputs one connected graph, there is one place to look when two plugins print the same markup.
See all features