dotvitals

The page declares more than one canonical URL

MediumConfirmedQuick winseo.canonical.conflicting

What this check looks for

This page names ‹count› different canonical URLs. When a page gives conflicting answers, search engines disregard all of them and decide for themselves.

Why it matters

Two canonicals are worse than none: the effort of adding them produces no effect, and the page is treated as if it had declared nothing, so the consolidation you intended does not happen.

When the check passes, your report says: “The page declares exactly one canonical URL”.

What it costs your score

When this check fails it removes 15 points from your SEO score, before the status, confidence and repeat multipliers are applied. SEO carries a weight of 5 in the overall score.

It shares the seo.canonical family ceiling of 20 points: however many findings that family produces, together they cannot remove more than that from SEO. One underlying problem showing up in several places is still one problem.

Severity
medium
Default confidence
confirmed
Status when triggered
fail
Deduction
15 points
Family cap
seo.canonical · 20
Category
SEO
Module
Seo audit
Fix owned by
user
In the ruleset since
2026.09

How the whole score is calculated

How to fix it

Leave exactly one canonical declaration in place and remove the rest.

Conflicting declarations are discarded wholesale, so the page currently behaves as though it declared no canonical at all.

  1. Find every source. Check the page source for more than one rel="canonical" element, and the response headers for a Link header carrying one.

  2. Decide which component owns the canonical — usually the application or CMS, not a plugin and not the CDN.

  3. Disable the others rather than configuring them to match, so they cannot drift apart again.

  4. Confirm the surviving canonical is the URL you want indexed and that it returns 200 rather than redirecting.

How to confirm it worked

  • curl -sS ‹url› | grep -ci 'rel="canonical"' — should be 1. A second canonical in a Link: header counts as a conflict too, so check the header line below as well

  • curl -sSI ‹url› | grep -i "^link:" — should not carry a second rel="canonical"

A named slot like ‹domain› — and the braces left in the configuration below — is filled in with your own values when this rule appears on a report.

Technical detail

The declared canonicals are:

‹urls›

Google's documentation is explicit that multiple conflicting canonical declarations cause all of them to be ignored. The declarations can come from either channel — a <link rel="canonical"> element or a Link: <…>; rel="canonical" response header — and a page carrying one of each with different values has the same problem as a page with two elements.

The usual cause is two things writing the tag: a content management system's own canonical plus one from an SEO plugin, or a template that emits one alongside a CDN or edge worker that adds a Link header. Removing one source is the fix; making them agree is fragile, because the next time either changes they will disagree again.

Standards and references

Test this on your domain

Run the check that produces this finding, on its own, against any domain.

Open the seo audit checker

Other seo audit checks