All rules
optional
Rule: structured-data-duplicatesWeight: 2/100

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.

Run the check
$ npx indxel check
Look for structured-data-duplicates in the output

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

PASS

No unique schema types appear more than once

WARN

One or more unique schema types appear multiple times

Edge cases

1

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.

2

@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.

3

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.

4

If your layout adds Organization and WebSite globally, those count once. Make sure no page re-adds them.

Configuration

indxel.config.ts
// 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, ListItem

Frequently 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.

Related rules

structured-data-present

optional — 4/100

structured-data-valid

optional — 2/100

structured-data-complete

optional — 4/100

Validate your SEO now

$npx indxel check
Get startedBrowse all rules
Indxel

SEO validation that runs in your terminal and blocks bad deploys.

GitHubnpm

Product

  • Documentation
  • Pricing
  • Plus Plan
  • CI/CD Guard
  • Indexation
  • Free Tools
  • Blog

Comparisons

  • vs Semrush
  • vs Ahrefs
  • vs Moz
  • vs Screaming Frog
  • All comparisons

Integrations

  • Vercel
  • GitHub Actions
  • Netlify
  • Docker
  • All integrations

Resources

  • Frameworks & use cases
  • Next.js
  • For freelancers
  • For agencies
  • SEO Glossary

Built with care. MIT Licensed.

PrivacyTermsLegalContact