Google’s John Mueller has advised that rel=canonical does not necessarily guarantee Google will recognize a page as the canonical version.
This was stated by Mueller in a Twitter reply to a user who asked why Google is indexing the “wrong” page, instead of the page that rel=canonical is pointing to.
More specifically, this individual was concerned about Google indexing page 3 of a paginated series rather than the first page.
In response, Mueller revealed that Google uses multiple factors to determine the canonical for a page.
“Rel=canonical isn’t a guarantee,” Mueller says. So it’s not unusual for Google to index a page that was not intended to be the canonical version.
We use multiple factors when determining the canonical for a page, a rel=canonical isn't a guarantee, so ultimately that can happen. Also, rel=canonical to the first page + rel next/prev are a bit conflicting, either it's the same as the first page, or they're paginated series.
— John ☆.o(≧▽≦)o.☆ (@JohnMu) July 20, 2018
The Twitter user also mentioned having rel prev/next in place, which Mueller says can conflict with rel=canonical.
“Also, rel=canonical to the first page + rel next/prev are a bit conflicting, either it’s the same as the first page, or they’re paginated series.”
Speaking of conflicting signals, Mueller recently advised a site owner on Reddit not to mix rel=canonical with a noindex tag.
“Redirects, rel=canonical, internal & external linking, sitemaps, hreflang, etc all tell us your preferences, and the more you can align those, the more we’ll follow them and use them to pick a canonical out of that set…”
Going back to the user’s question on Twitter, and bearing in mind what Mueller said on Reddit, a potential conclusion can be drawn.
Google may recognize page 3 of a paginated series as the canonical version because of other signals that outweigh rel=canonical.
For example, more external links may be pointing to page 3 compared to page 1, which has led Google to determine that page 3 is the best version to index in search results.
Of course, that’s just one possible explanation. What’s known for sure is Google will determine the canonical version of a page using a variety of signals.
Rel=canonical helps Google recognize the canonical version — but, as the title states, it’s not a guarantee.