← Back to SEO LearnNOTABIS SEO / LEARN

Performance · 16 September 2026

Duplicate Resources: Why Pages Load the Same Asset Twice

A duplicate resource is an image, script, or stylesheet URL referenced more than once in one measured HTML page. NOTABIS ignores the normal preload-plus-stylesheet pair and reports other repeats for review.

Quick answer

Duplicate resource references occur when a page asks for the same image, script, or stylesheet URL more than once. NOTABIS reports duplicate-resource when its measured resource references contain a repeated URL that is not the normal preload-plus-stylesheet pair. Remove unnecessary duplicates after checking dependency order and browser behaviour.

What the issue means

A layout can include the same asset through two components:

<script src="/js/app.js"></script>
<script src="/js/app.js"></script>

Browsers may reuse a cached response, but duplicate markup still adds parsing and coordination work and can hide an accidental dependency. A preload followed by the stylesheet it prepares is a recognised pattern and is not treated as a duplicate by this rule when those are the only two references.

Why it matters for SEO

Repeated assets can increase page work and make performance debugging harder. They do not create a direct ranking penalty, and a cached duplicate may have little user-visible impact. Measure real loading and Core Web Vitals before removing a resource that a component genuinely needs.

How NOTABIS detects it

The duplicate-resource rule collects absolute URLs from img[src], script[src], and link[href] in the measured HTML. It flags each URL whose count is at least two, except a pair consisting of one rel="preload" link and one rel="stylesheet" link. It records the duplicated URLs and reference count at page scope; it does not fetch assets or measure network timing.

How to check it yourself

Inspect the DOM and View Source, then filter the Network panel by URL. Check whether the same asset appears under different query strings or hosts, whether a preload has a matching consumer, and whether a client-side component adds it again during navigation. Review bundler output and shared layouts.

How to fix it

Make one component or layout responsible for each shared asset, remove duplicate tags, and deduplicate bundle imports. Preserve deliberate preload and stylesheet pairs and verify that removing a script does not break a route or consent state. Recheck the final markup and resource timing after deployment.

When this is intentional or does not need fixing

A preload, stylesheet, and module may intentionally reference related resources, and a repeated asset in separate documents is not a page-level duplicate. Third-party widgets can add their own resources. Keep an intentional duplicate when testing shows it is required, but document why and confirm it is not an accidental cache-busting variant.

Related issues

Compare render-blocking resource candidates, HTTP compression, and slow server responses.

Run a NOTABIS audit

NOTABIS lists repeated image, script, and stylesheet URLs in the measured HTML so you can trace them to layouts, bundles, or third-party widgets.

Measure before you change

See which issues affect your site.
Run a NOTABIS audit ↗