Rule: structured-data-duplicates
Some schema types should only appear once per page. Two FAQPage blocks, two BreadcrumbList blocks, or two Organization blocks create ambiguity — Google doesn't know which to use and may ignore both. This is especially common in component-based frameworks where a layout and a page component both inject the same schema type.
What it checks
Indxel collects all @type values from all JSON-LD blocks on the page. For types that should be unique (FAQPage, BreadcrumbList, WebSite, Organization, HowTo, LocalBusiness, SearchAction), it checks that each appears at most once. Multiple instances of Article or Product on the same page are allowed (e.g., a product listing page).
Thresholds
No unique schema types appear more than once
One or more unique schema types appear multiple times
Edge cases
In Next.js, layout.tsx and page.tsx both inject into the same HTML. If both add a BreadcrumbList, the rendered page has two. Indxel sees the final HTML, so it catches this even if each file only has one.
@graph arrays with multiple types: if a single @graph contains two FAQPage items, that counts as duplicates. The deduplication check applies to @graph items as well.
Article and Product types are not considered unique — a product listing page can legitimately have multiple Product schemas. Similarly, a blog index can have multiple Article schemas.
If your layout adds Organization and WebSite globally, those count once. Make sure no page re-adds them.
Configuration
// indxel.config.ts
import { defineSEO } from "indxel";
export default defineSEO({
rules: {
"structured-data-duplicates": true, // enabled by default
},
});
// Unique types (should appear at most once):
// FAQPage, BreadcrumbList, WebSite, Organization,
// HowTo, LocalBusiness, SearchAction
//
// Non-unique types (multiple allowed):
// Article, Product, Review, Event, ListItemFrequently asked questions
Can I have two Article schemas on the same page?
Yes. Article and Product are not considered unique types. A blog index with multiple article previews can legitimately have multiple Article schemas. Only types like FAQPage, BreadcrumbList, and Organization should be unique.
How do I avoid duplicates between layout and page?
Keep global schemas (Organization, WebSite) in the root layout only. Add page-specific schemas (FAQPage, Article, BreadcrumbList) in the page component only. Never add the same type in both layout and page.