What Does "Hreflang to non-canonical" Mean?

Hreflang tags were found that were linking to a non-canonical page.

Hreflang is a way to tell search engines that there are multiple versions of a page in different languages. This will help search engines serve visitors the most appropriate version of each URL by language or region.

Here's an example of hreflang tags for https://example.com/en-us/products, which is an English page targeting visitors in the United States that also has an English version targeting United Kingdom, a French version, a German version, and a default version available:

<link rel="alternate" hreflang="en-us" href="https://example.com/en-us/products" />

<link rel="alternate" hreflang="en-gb" href="https://example.com/en-gb/products" />

<link rel="alternate" hreflang="fr" href="https://example.com/fr/products" />

<link rel="alternate" hreflang="de" href="https://example.com/de/products" />

<link rel="alternate" hreflang="x-default" href="https://example.com/products" />

All the above URLs should be canonical. If any of them are non-canonical, they will be flagged with this issue.

Why It's Important

Linking to a non-canonical page in the hreflang tag is confusing to search engines. The hreflang tag tells search engines that this URL is the best content for visitors of this language and region.

A non-canonical page tells search engines that this URL should not be indexed, but there is a better version of this page's content that should be indexed in its place. Since these signals contradict themselves, search engines may give up and ignore the hreflang tags completely or misinterpret them, leading to unpredictable outcomes.

How To Fix

You'll want to replace any hreflang tags to a non-canonical with the canonical version. First you'll need to find the canonical version of each URL. The easiest way to do this, is to click on each "hreflang URL" in the table to find the canonical version of this URL in the Content tab on the URL X-Ray page.

Once you've found the canonical URL, replace the non-canonical version with this one in the hreflang tag.

Did this answer your question?