rel=canonical: the ultimate guide

A canonical URL lets you tell search engines that certain similar URLs are actually the same. Because sometimes you have products or content that can be found on multiple URLs — or even multiple websites. By using canonical URLs (HTML link tags with the attribute rel=canonical) you can have these on your site without harming your rankings. In this ultimate guide, I’ll discuss what canonical URLs are, when to use them, and how to prevent or fix a few common mistakes!

Table of contents

The rel=canonical element, often called the “canonical link”, is an HTML element that helps webmasters prevent duplicate content issues. It does so by specifying the “canonical URL”, the “preferred” version of a web page – the original source, even. And this improves your site’s SEO.

The idea is simple. If you have several versions of the same content, you pick one “canonical” version and point the search engines at it. This solves the duplicate content problem where search engines don’t know which version to show in their results.

The SEO benefit of rel=canonical

Choosing a proper canonical URL for every set of similar URLs improves the SEO of your site. This is because the search engine knows which version is canonical, and can count all the links pointing at the different versions as links to the canonical version. In concept, setting a canonical is similar to a 301 redirect, only without the actual redirecting.

The history of rel=canonical

The canonical link element was introduced by Google, Bing, and Yahoo! in February 2009. If you’re interested in its history, I would recommend Matt Cutts’ post from 2009. This post gives you some background and links to different interesting articles. Or watch the video of Matt introducing the canonical link element. Because, although the idea is simple, the specifics of how to use it are often a bit more complex.

The process of canonicalization

Ironic side note

The term Canonical comes from the Roman Catholic tradition, where a list of sacred books was created and accepted as genuine and named the canonical Gospels of the New Testament. The irony is it took the Roman Catholic church about 300 years and numerous fights to come up with the canonical list, and they eventually chose four versions of the same story…

When you have several choices for a product’s URL, canonicalization is the process of picking one of them. Luckily, it will be obvious in many cases: one URL will be a better choice than others. But in some cases, it might not be as obvious. This is nothing to worry about. Even then it’s still pretty simple: just pick one! Not canonicalizing your URLs is always worse than canonicalizing your URLs.

How to set canonical URLs

Let’s assume you have two versions of the same page, each with exactly – 100% – the same content. The only difference is that they’re in separate sections of your site. And because of that the background color and the active menu item are different – but that’s it. Both versions have been linked to from other sites, so the content itself is clearly valuable. So which version should search engines show in results?

For example, these could be their URLs:

  • https://example.com/wordpress/seo-plugin/
  • https://example.com/wordpress/plugins/seo/

A correct example of using rel=canonical

The situation described above occurs fairly often, especially in a lot of e-commerce systems. A product can have several different URLs depending on how you got there. But this is exactly what rel=canonical was invented for. In this case, you would apply rel=canonical as follows:

  1. Pick one of your two pages as the canonical version. This should be the version you think is the most important. If you don’t care, pick the one with the most links or visitors. When all these factors are equal, flip a coin. You just need to choose.
  2. Add a rel=canonical link from the non-canonical page to the canonical one. So if we picked the shortest URL as our canonical URL, the other URL would link to the shortest URL in the <head> section of the page – like this:
    <link rel="canonical" href="https://example.com/wordpress/seo-plugin/" />

    It’s as easy as that! Nothing more, nothing less.

What this does is “merge” the two pages into one from a search engine’s perspective. It’s a “soft redirect”, without actually redirecting the user. Links to both URLs now count as the single, canonical version of the URL.

Want to know more about the use of rel=canonical on category and product pages of your eCommerce site? I also discuss this topic in this Ask Yoast video.

Setting the canonical URL in Yoast SEO

Our Yoast SEO WordPress plugin lets you change the canonical URL of several page types in the plugin settings. You only need to do this if you want to change the canonical to something different from the current page’s URL. Yoast SEO already renders the correct canonical URL for almost any page type in a WordPress install.

For posts, pages, and custom post types, you can edit the canonical URL in the advanced tab of the Yoast SEO metabox:

where to set canonical url in Yoast SEO
Setting a canonical URL in Yoast SEO

For categories, tags and other taxonomy terms, you can change the canonical URL in the same place in the Yoast SEO metabox. If you have other advanced use cases, you can also use the wpseo_canonical filter to change the Yoast SEO output.

When should you use canonical URLs?

Yoast Duplicate Post

Canonicals can help you out when your site benefits from similar content on different pages. Creating these pages can take up a lot of your time. If you’re looking for an easy way to duplicate posts or pages, Yoast Duplicate Post is the plugin for you!

This plugin can save you loads of time by copying things like the text, featured image, meta data, and SEO optimizations. That way you don’t have to start from scratch with every new page. Just don’t forget to set a canonical if your copied page is very similar to the original.

301 redirect or canonical

If you are unsure whether to do a 301 redirect or set a canonical, what should you do? The answer is simple: you should always do a redirect, unless there are technical reasons not to. If you can’t redirect because that would harm the user experience or be otherwise problematic, then set a canonical URL.

Should a page have a self-referencing canonical URL?

In the image above, we link the non-canonical page to the canonical version. But should a page set a rel=canonical for itself? This question is a much-debated topic amongst SEOs. At Yoast, we strongly recommend having a canonical link element on every page and Google has confirmed that’s best. That’s because most CMS’s will allow URL parameters without changing the content. So all of these URLs would show the same content:

  • https://example.com/wordpress/seo-plugin/
  • https://example.com/wordpress/seo-plugin/?isnt=it-awesome
  • https://example.com/wordpress/seo-plugin/?cmpgn=twitter
  • https://example.com/wordpress/seo-plugin/?cmpgn=facebook

The issue is that if you don’t have a self-referencing canonical on the page that points to the cleanest version of the URL, you risk being hit by this. And if you don’t do it yourself, someone else could do it to you and cause a duplicate content issue. So adding a self-referencing canonical to URLs across your site is a good “defensive” SEO move. Luckily, our Yoast SEO plugin takes care of this for you.

Cross-domain canonical URLs

Perhaps you have the same piece of content on several domains. There are sites or blogs that republish articles from other websites on their own, as they feel the content is relevant for their users. In the past, we’ve had websites republishing articles from Yoast.com as well (with express permission).

But if you had looked at the HTML of every one of those articles you’d found a rel=canonical link pointing right back to our original article. This means all the links pointing to their version of the article count towards the ranking of our canonical version. They get to use our content to please their audience, and we get a clear benefit from it too. This way everybody wins!

Faulty canonical URLs: common issues

There are many examples out there of how a wrong rel=canonical implementation can lead to huge issues. I’ve seen several sites where the canonical on their homepage pointed at an article, only to see their home page disappear from search results. But that’s not all. There are other things you should never do with rel=canonical. Here are the most important ones:

  • Don’t canonicalize a paginated archive to page 1. The rel=canonical on page 2 should point to page 2. If you point it to page 1, search engines will actually not index the links on those deeper archive pages.
  • Make them 100% specific. For various reasons, many sites use protocol-relative links, meaning they leave the http / https bit from their URLs. Don’t do this for your canonicals. You have a preference, so show it.
  • Base your canonical on the request URL. If you use variables like the domain or request URL used to access the current page while generating your canonical, you’re doing it wrong. Your content should be aware of its own URLs. Otherwise, you could still have the same piece of content on – for instance – example.com and www.example.com and have each of them canonicalize to themselves.
  • Multiple rel=canonical links on a page cause havoc. When we encounter this in WordPress plugins, we try to reach out to the developer doing it and teach them not to, but it still happens. And when it does, the results are wholly unpredictable.

Read more: 6 common SEO mistakes and how to avoid them »

rel=canonical and social networks

Facebook and Twitter honor rel=canonical too, and this might lead to weird situations. If you share a URL on Facebook that has a canonical pointing elsewhere, Facebook will share the details from the canonical URL. In fact, if you add a ‘like’ button on a page that has a canonical pointing elsewhere, it will show the like count for the canonical URL, not for the current URL. Twitter works in the same way. So be aware of this when sharing URLs or when using these buttons.

Advanced uses of rel=canonical

Google also supports a canonical link HTTP header. The header looks like this:

Link: <https://www.example.com/white-paper.pdf>;    rel="canonical" 

Canonical link HTTP headers can be very useful when canonicalizing files like PDFs, so it’s good to know that the option exists.

Using rel=canonical on not so similar pages

While I wouldn’t recommend this, you can use rel=canonical very aggressively. Google honors it to an almost ridiculous extent, where you can canonicalize a very different piece of content to another piece of content. However, if Google does catch you doing this, it will stop trusting your site’s canonicals and thus cause you more harm…

Using rel=canonical in combination with hreflang

We also talk about canonical in our ultimate guide to hreflang. That’s because it’s very important that when you use hreflang, each language’s canonical points to itself. Make sure that you understand how to use canonical well when you’re implementing hreflang, as otherwise, you might kill your entire hreflang implementation.

Conclusion: rel=canonical is a power tool

Rel=canonical is a powerful tool in an SEO’s toolbox. Especially for larger sites, the process of canonicalization can be very important and lead to major SEO improvements. But like with any power tool, you should use it wisely as it’s easy to cut yourself. I hope this guide has helped you gain an understanding of this powerful tool and how (and when) you can use it.

Keep reading: WordPress SEO: The definitive guide to higher rankings for WordPress sites »

Even better SEO with Yoast SEO Premium!

  • Optimize your site for the right keywords for your users
  • Avoid dead links in your site
  • Get previews for sharing on Twitter and Facebook
  • Content quality and link suggestions as you write
More info

16 Responses to rel=canonical: the ultimate guide

  1. RR Kush
    RR Kush  • 5 days ago

    Hey Guys, not sure how to add Canonical for my homepage which is the latest blog post page. Any support will be highly appreciated.

  2. Romel Adhikary
    Romel Adhikary  • 1 week ago

    Yoast always helped me for better ranking. This is an awesome post indeed. Thank you so much.

    • Camille Cunningham
      Camille Cunningham  • 1 week ago

      You’re welcome, Romel, and keep up the good work with your rankings! :)

  3. ABC
    ABC  • 1 week ago

    As a webmaster who doesn’t know how to program, I just want to say thank you to yoast, you are a great team that really “solved the needs of users”!

    • Camille Cunningham
      Camille Cunningham  • 1 week ago

      From all of us at Yoast, thank you for those kind words!!

  4. Jayne
    Jayne  • 1 week ago

    Thanks for clarifying this, I just have one question. If someone is publishing a post from my site as a guest post on their website, do they need to insert the canonical link just once in the head section of the post and not in the links to my website which they use throughout the text or do the links in the text also need to have ‘rel=canonical’ too? Thanks in advance. 😊

    • Edwin Toonen
      Edwin Toonen  • 1 week ago

      Hi Jayne. You only have to add a canonical on that guest post article pointing from the other site to your site. You don’t have to do that for any links in the post.

      • Jayne
        Jayne  • 1 week ago

        Thank you!

  5. Webonix
    Webonix  • 2 weeks ago

    Thank a for shearing this article because i am facing same issue right now. but please can you tell for index page which canonical i used ?

    1) rel=”canonical” href=”https://example.com”
    2) rel=”canonical” href=”https://example.com/index.html”

    • Edwin Toonen
      Edwin Toonen  • 1 week ago

      Hi! I’m not sure what you mean. Do you need to find out what the canonical is on your homepage? If so, simply look at the source code for the page and look for rel=canonical. If you’re asking which canonical you should use for your homepage, that would be number one.

  6. supplynote
    supplynote  • 2 weeks ago

    my website audit was showing the canonical tag missing error…but I was unaware about what it is & how to add them & here your post clarifies my all doubts thank you so much hope to see more post from you.

    • Camille Cunningham
      Camille Cunningham  • 1 week ago

      Hi there! You’re welcome and good luck with setting your canonicals :)

  7. arena animation kolkata
    arena animation kolkata  • 2 weeks ago

    Finally, I have found this article. Thankyou Yoast for such a great article on canonical URL.

    • Camille Cunningham
      Camille Cunningham  • 1 week ago

      You’re very welcome! Good luck with the implementation :)

  8. Iryna
    Iryna  • 2 weeks ago

    Thanks for this great article but I don’t understand one thing.

    “Don’t canonicalize a paginated archive to page 1. The rel=canonical on page 2 should point to page 2. If you point it to page 1, search engines will actually not index the links on those deeper archive pages.”

    It is said everytwhere that this is how paginated pages should be canonized. For example, canonical on page 2 points to the page 1. For the 1st time in my life I see that it is incorrect. How could it be possible?

    • Camille Cunningham
      Camille Cunningham  • 1 week ago

      Hi Iryna. Not sure where you’ve read that, because adding a self-referencing canonical to archive pages has been a SEO best practice for ages. Care to share a link? Yoast SEO automatically adds a self-referencing canonical to your archives: https://yoast.com/wordpress/plugins/seo/canonicals-in-yoast-seo/