SEO-04
Canonical missing or points off-site
What the check measures
On every live page we look for <link rel= and verify one single thing: that its hostname matches the audited domain. The finding is raised when the element is missing, is not a valid URL, or points at another domain.
An important clarification: we do not check that the canonical points at this exact page. A canonical pointing at another page of the same site is a legitimate pattern: it is precisely how parameterised and duplicate variants are handled. A finding there would be a false alarm.
What the check does not do:
- It does not verify the canonical's target exists. A canonical pointing at your own 404 passes.
- It cannot see a canonical injected by JavaScript: Google will process it, we will not find it in the static HTML.
- It does not report contradictions between the canonical, the sitemap and hreflang, even though that causes trouble more often than a missing element.
- It does not check canonicals on pages that are not live content (redirects, errors).
- It does not find out which version of the address the search engine ended up choosing. A canonical is a suggestion, not an order. What Google made of it is shown by URL Inspection in Google Search Console, which prints the canonical it picked next to yours.
The finding is page-level; severity is warning. In the core set a missing canonical is handled by ACC-04, but through a different lens and as one of three conditions. SEO-04 additionally catches a canonical pointing off-site.
How strong the evidence is
We recommend it because it does no harm or has some other benefit, but we promise nothing about whether it makes language models cite you. Nobody has demonstrated that yet.
For visibility in AI answers we have no documented effect. For classic search, though, Google documents the canonical and is precise about it in a way worth quoting: rel= is to Google a strong signal, not a directive, and without a declared value it picks a canonical itself.
Two things follow that people confuse. A missing canonical does not mean the page drops out of the index: it means you are not steering the choice. And a declared canonical does not mean Google will obey it: when the content says otherwise, it decides for itself.
A canonical pointing at another domain is a different matter and more serious. You are saying “this page belongs elsewhere”, and Google treats that as a strong signal. It nearly always happens by accident: a template copied from another project, a deployment from staging, or a plugin remembering the domain from installation.
The practical conclusion: fix an off-domain canonical immediately: it is usually an unintended defect with a large impact. Treat a missing canonical as housekeeping.
How to fix it
Every indexable page should carry a canonical with an absolute URL of the preferred version:
<link rel="canonical" href="https://your-domain/path-to-page" />- A canonical pointing at itself is correct: it is how you say “this is the right URL”.
- Absolute, not relative. Relative works but breaks quietly when the base path changes.
- With parameters, point at the clean version. Otherwise every campaign mints its own canonical page.
- One canonical per page. Two elements with different targets and Google ignores both.
- Check the domain in the generated HTML, not in the template; this is exactly where an off-site canonical is born.
And one check that catches the most common silent defect: the canonical must be consistent with your sitemap. When the sitemap lists a URL with a trailing slash and the canonical without, you are sending two contradictory signals about one page.
What the report says about it
Finding description
`<link rel=
Recommendation
Add `<link rel=
Sources
- Google Search Central: Canonical URLs and duplicate content (accessed 2026-09-12)
Text verified 2026-09-12