Four sites, four different things done wrong with one tag. I pulled these out of the audit folder because they make a set, and because the fourth one is a recommendation I wrote myself, twice, and got wrong.
1. The tag is simply absent, at scale
A classic car marketplace: 8,317 pages with no canonical URL, or with a canonical still pointing at the http version of a site that had been on https for years.
A car parts retailer, same year: 1,347 pages in the same state.
Neither of those numbers is a page-by-page failure. Nobody omitted a tag 8,317 times. One template was responsible for most of the site, that template had no canonical in it, and the omission printed itself once per URL. The number tells you how many pages use the template, not how many mistakes were made. There was one mistake.
That distinction matters because it changes the size of the job. Presented as “8,317 canonical errors” it sounds like a quarter’s work and it gets deferred. Presented as “one template, one line” it gets done on a Tuesday.
How common is missing a canonical at all? HTTP Archive’s 2025 Web Almanac found one on 67% of mobile pages, so a third of the web has none, and most of those sites are fine. Absence is not automatically a fault. It becomes one when the site also generates several URLs for the same thing, which is exactly what a listings platform does.
2. The homepage canonical is wrong, or missing entirely
The same two audits, both on the single most important URL on the site.
On the marketplace, the recommendation reads: Canonical URL is not defined. It should be https://www.classiccardeals.com/. On the retailer: Canonical URL is incorrect.
This one is worth calling out separately from the 8,317, even though it is the same tag, because the homepage is usually reachable at four or five addresses: with and without www, with and without a trailing slash, http and https, sometimes /index.php as well. Every other page on the site links to it, so whichever version Google settles on inherits the site’s internal link equity. Leaving that decision to Google is not catastrophic. It is just an odd thing to leave to chance on the one URL you care about most.
It takes thirty seconds to check and I have found it wrong on sites that had been paying an agency for years.
3. The canonical only exists after JavaScript runs
This is the one that does not show up in a normal check, because when you view the rendered page the tag is there.
The Almanac data has the tell in it. A canonical appears in the raw HTML of 64.3% of mobile pages, and in the rendered HTML of 66.1%. That gap, call it two pages in a hundred, is sites where the canonical does not exist in the served document at all. Something injected it in the browser.
It usually works. Google renders. But you have taken a directive that could have been a static line in the <head> and made it conditional on a script executing correctly, on a crawler’s schedule, with a rendering budget attached. When it does not work you get no error anywhere. You get a page quietly canonicalising to nothing, and you find out months later.
Check the raw source, not the inspector. view-source: and Ctrl+F, or fetch the URL with curl. If the tag is not in what the server sent, it is not as reliable as you think it is.
4. Canonicalising paginated pages to page one, which is what I told two clients to do
Here is the uncomfortable one.
In a 2022 audit of a fitness certification provider I found 266 paginated pages with no canonical and wrote: The canonical URL for paginated pages should be the parent URL. For example: Canonical URL for /blog/page/1 should be /blog/.
In another audit the same year, a pharmacy education site had paginated author and category archives that were self-canonicalising, each page of the series pointing at itself. I flagged it as a fault and recommended they point at the parent instead.
Google’s position is the opposite. Their pagination guidance states it plainly: “Don’t use the first page of a paginated sequence as the canonical page. Instead, give each page its own canonical URL.” The reasoning is straightforward once you say it out loud. Page four of a listing is not a duplicate of page one. It has different items on it. Telling Google it is a copy of page one is telling Google those items do not exist.
So the second client was already doing it correctly and I told them to change it.
I do not know whether they did, and I have not gone back to ask, which is its own small lesson about follow-up. What I can say is that the instinct underneath the recommendation was not mad. Paginated archives genuinely do generate a lot of low-value URLs, and wanting to consolidate them is reasonable. The canonical tag is simply the wrong instrument. If page four of an author archive should not be in the index, the answer is noindex, or not generating the archive, or fixing why you have a nine-page archive for an author with eleven posts. It is not lying to Google about what the page contains.
The same page also carried the rel=next and rel=prev advice that was standard at the time. Google no longer uses those either.
What I actually check now
Four things, in this order, and the whole pass takes about ten minutes on a site of any size.
- Is there one at all, and is it in the raw HTML? Not the rendered DOM. The served document.
- Does it point at the https, canonical-host version of itself? Most of the time a self-referencing canonical is the right answer and the interesting cases are the exceptions, not the rule.
- Is the count suspiciously round, or suspiciously equal to something else in the crawl? 8,317 canonical faults and 8,317 orphan pages on the same site are not two findings. They are one page-set with one template behind it. I have written up what a 90% orphan page rate looks like separately. Chasing them as separate line items is how an audit becomes a spreadsheet nobody implements.
- Is anything canonicalising away its own content? Paginated series, filtered views that show genuinely different products, location pages that are actually different. A canonical pointing somewhere else is a request for deletion from the index, and people use it as though it were a tidiness setting.
The short version
- Missing at scale is one template mistake, not thousands. Say it that way and it gets fixed.
- Check the homepage separately. It is reachable at several addresses and every internal link points at it.
- Read the raw HTML. A canonical injected by JavaScript works until it doesn’t, and fails silently.
- Do not canonicalise page four to page one. Google says give each page its own. I told two clients otherwise and I was wrong.
- Matching numbers across findings mean one cause. Fix the template, not the list.
- A canonical is not a tidiness tag. Pointing it elsewhere asks Google to drop the page.
If a site should be ranking and it isn’t, that’s the work I do. Technical SEO covers the crawling, indexing and canonicalisation layer. If you’re not sure which of several plausible problems is costing you, that’s what an SEO audit is for.

