Common fight
Two graphs. Same type. Different @id.
A JSON-LD collision is two emitters on one public page describing the same @type with different identifiers. The names can match. The ids do not.
What we mean by collision
Yoast prints https://example.com/#organization. Rank Math prints something like /#schema/Organization. A theme can add a third node with no @id at all. To a consumer those are separate entities, even when the visible name is the same.
Valid is not the same as alone
Google’s Rich Results Test validates one block. It does not tell you that WooCommerce and an SEO plugin both emitted Product, or that two plugins both claimed Organization. GraphClash flattens every application/ld+json graph and lists the competing ids.
Pick one emitter per type
That is the fix. Disable the extra Organization, Product, or WebSite in the plugin or theme you are not using as the source of truth. We do not log into WordPress. We do not generate a replacement graph.
Check a page
Free, no account. Results stay in this browser session.
FAQ
- Is a collision a Google penalty?
- Usually not. Overlapping JSON-LD is not a ranking penalty in the way people mean that word. Conflicting entities can still weaken rich-result eligibility because the consumer has to pick a story.
- What types do you watch?
- Organization, WebSite, WebPage, Article, Product, FAQPage, and BreadcrumbList. We also flag two Organizations with different names or logos.
- How is this different from Rich Results Test?
- Google’s test asks whether a block is valid. We ask whether two emitters are fighting on the same page. A page can pass the test and still carry two Organization nodes.
- How do people usually turn a type off?
- In the plugin you are not using as the source of truth — or with the public filters
wpseo_json_ld_output (Yoast) and rank_math/json_ld (Rank Math). GraphClash only detects. It does not ship a functions.php patch or change settings.
Back to the checker