SEO
Canonical: the practical guide
A canonical is a hint, not an order: it names the URL that represents duplicated content. The rules, the errors and a check across the whole site.
Key points
- A canonical is a signal: Google can ignore it and pick another URL, as the “Duplicate” entry in Search Console shows.
- Every indexable page should carry a canonical pointing at itself, as an absolute URL.
- A canonical pointing at a noindex page, a redirect or a 404 is a conflicting signal: fix it, do not ignore it.
A canonical is a tag that tells Google which URL represents a piece of content when the same content answers on several addresses. It is not an order: it is a signal Google can accept or ignore, and in practice it ignores it when the internal signals say something else.
What a canonical does
The <link rel="canonical" href="..."> tag declares the preferred URL for a page, and Google treats it as one hint among others: internal links, sitemap, hreflang and redirects weigh together. When most signals point elsewhere, Google picks the other URL and reports it in the Indexing report as “Duplicate, Google chose a different canonical”.
The rules that do not change
First: every indexable page has a canonical pointing at itself, with an absolute URL and no parameters. Second: one canonical per page, in the <head> or in the HTTP Link header for non-HTML files. Third: the canonical points at a live, indexable page with the same content. Fourth: canonical and noindex do not coexist, because they say opposite things.
Pagination and languages
The pages of a paginated list are separate pages: page two has a canonical pointing at itself, not at page one, otherwise the content drops out of the index. With hreflang each language version has a self-referencing canonical and a set of alternates that point at each other; an Italian canonical pointing at the English page cancels the hreflang.
The check across a site
curl -s https://ui.eneawork.it/sitemap-blog.xml | grep -o "[^ urls.txt
while read -r u; do printf "%s\t%s\n" "$u" "$(curl -s "$u" | grep -o 'rel="canonical" href="[^"]*"' | head -n1)"; done < urls.txt
The command takes the first ten URLs from the blog sitemap, downloads each page and prints the URL next to the declared canonical. Every row should show the same address twice. A blank row means the canonical is missing; a different address is the case to open first.
The errors the report shows
“Alternate page with proper canonical tag” is normal when a known duplicate exists. “Duplicate, Google chose a different canonical” means your canonical was ignored: look for internal links or sitemap entries pointing at the other URL. “Excluded by noindex” with a canonical present is a conflict to resolve, not a Google mistake.
The EneUI catalogue
On large catalogues the canonical is the main defence against parameters: filters, sort orders and category pages generate variants of the same list. The EneUI catalogue holds 111,985 components and 1,556 blocks from 1,472 libraries, with stable URLs per record and per category, for example the pricing category and the blocks. Records live under /components, with one address per item, not one address per filter. Checked on 1 November 2026.
The limitation
A canonical does not merge signals in real time: it needs a new crawl, and Google can decide otherwise for months. It does not fix wrong internal links, it does not solve different content on the same URL, and it does not replace a redirect when the old page has been retired.
Where to continue
The sequence for getting indexed is in getting a site indexed by Google; how to read the report that flags duplicates is in Search Console: reading indexing; the choice between WordPress and React changes the default canonicals, as the comparison WordPress, Wix or React components shows.
Frequently asked questions
Is a canonical an order for Google?
No, it is a hint. Google uses it as a signal and may pick another URL, reporting the choice as a different canonical.
Should every page have a canonical?
Yes, every indexable page should have a canonical pointing at itself. It is the simplest way to avoid ambiguity when parameters, capitalisation or path variants appear.
Canonical and noindex together?
They are conflicting signals: a canonical pointing at a noindex page tells Google to show a URL you do not want indexed. Pick one signal per case.
A redirect or a canonical?
For a retired page, a 301 redirect. A canonical is for two live URLs with the same content, not for hiding an old page.
Does a canonical work across domains?
Yes, when the content is truly identical and the target domain is reachable. It does not work to move authority away from a site you do not control.