How to Specify a Canonical with rel="canonical" and Other Methods | Google Search Central | Documentation | Google for Developers Skip to main content Google Search Central Documentation SEO fundamentals Introduction Search Essentials SEO Starter Guide Optimizing for generative AI search How Google Search Works Do you need an SEO? Crawling and indexing Sitemaps robots.txt Meta tags Crawler management Removals Canonicalization Redirects JavaScript SEO Ranking and search appearance Visual Elements gallery Title links Snippets Images Videos Structured data Favicons Site-specific guides Ecommerce International and multilingual sites Data analysis Get started with Search Console Debug traffic drops Using Search Console and Google Analytics data for SEO Get started with Google Trends Support Blog What's new All updates Documentation updates Ranking updates New YouTube videos Recent podcast episodes Events Case studies / English Deutsch Español Español – América Latina Français Indonesia Italiano Polski Português – Brasil Tiếng Việt Türkçe Русский العربيّة हिंदी ภาษาไทย 中文 – 简体 中文 – 繁體 日本語 한국어 Sign in Documentation Search Console Google Search Central Documentation More Support Blog What's new More Events Case studies Introduction Search Essentials Overview Technical requirements Spam policies SEO fundamentals SEO Starter Guide How Google Search works Creating helpful, reliable, people-first content Generative AI fundamentals Optimizing for generative AI Guidance on using generative AI Maintaining your site's SEO Developer's guide to Search Do you need an SEO? Guidance on third-party SEO tools and advice Crawling and indexing Overview File types Google can index URL structure Links Sitemaps Learn about sitemaps Build and submit a sitemap Manage sitemaps with sitemap index file Sitemap extensions Image sitemaps News sitemaps Video sitemaps and alternatives Combining sitemap extensions Crawler management Ask Google to recrawl your URLs Troubleshoot crawl errors Google crawlers List of Google crawlers Googlebot Reduce the Google crawl rate Verifying Googlebot and other Google crawlers robots.txt Introduction to robots.txt How Google interprets the robots.txt specification Canonicalization What is URL canonicalization How to specify a canonical URL with rel="canonical" and other methods Fix canonicalization issues Mobile site and mobile-first indexing AMP AMP on Google Search guidelines Understand how AMP works in search results Enhance AMP content Validate AMP content Remove AMP content JavaScript Understand the JavaScript SEO basics Fix search-related JavaScript problems Fix lazy-loaded content Dynamic rendering as a workaround Page and content metadata Page metadata Meta tags Meta tags and HTML attributes that Google supports Robots meta tag, data-nosnippet, and X-Robots-Tag noindex rel attributes Removals Control what you share with Google Page removals Image removals Redacted information Site moves and changes Redirects and Google Search Site moves Changing your hosting Move a site with URL changes A/B testing Temporarily pause or disable a website Ranking and search appearance Overview AI features Byline dates Favicons Featured snippets Flexible Sampling Google Discover Images Local features Business details Top Places List Opting out of local search results Page experience Understanding page experience Core Web Vitals Interstitials and dialogs Get started with signed exchanges on Google Search Preferred sources Ranking systems A guide to Google Search ranking systems Reviews system Ranking updates List of ranking updates Core updates Spam updates Site names Sitelinks Snippets Structured data Understand how structured data works Structured data general guidelines Enriched search results Generate structured data with JavaScript Feature guides All structured data features Article Book actions Breadcrumb Carousel Course list Dataset Discussion forum Education Q&A Employer aggregate rating Fact check Event FAQ Image metadata Job posting Local business Math solver Movie carousel Organization Shopping Overview Product snippet Merchant listing Variants Loyalty program Merchant return policy Merchant shipping policy Profile page Q&A Recipe Review snippet Software app Speakable Subscription and paywalled content Vacation rental Video Title links Translated features Translated results Ad networks and translation-related Google Search features Videos Visual Elements gallery Web Stories Enable Web Stories on Google Best practices for creating Web Stories Web Story content policy Early Adopters Program Package tracking Structured data carousels (beta) Monitoring and debugging Debug drops in Search traffic Monitor with Search Console Get started with Search Console Improve SEO with a bubble chart Using Search Console and Google Analytics data for SEO Debug with search operators Overview site: search operator Google Images search operators Preventing and monitoring abuse Overview Prevent user-generated spam Malware and unwanted software Prevent a malware infection Social engineering (phishing and deceptive sites) Google Safe Browsing Repeat Offenders Policy Get started with Google Trends Site-specific guides Ecommerce Overview Where content can appear Share product data Include structured data Launch a new website Write high quality reviews Design a URL structure Ecommerce site structure Pagination, incremental page loading, and Search International and multilingual Overview Managing multi-regional and multilingual sites Tell Google about localized versions of your page How Google crawls locale-adaptive pages Explicit content Guidelines for sites with explicit content What to do if your site is incorrectly flagged as explicit SEO fundamentals Introduction Search Essentials SEO Starter Guide Optimizing for generative AI search How Google Search Works Do you need an SEO? Crawling and indexing Sitemaps robots.txt Meta tags Crawler management Removals Canonicalization Redirects JavaScript SEO Ranking and search appearance Visual Elements gallery Title links Snippets Images Videos Structured data Favicons Site-specific guides Ecommerce International and multilingual sites Data analysis Get started with Search Console Debug traffic drops Using Search Console and Google Analytics data for SEO Get started with Google Trends All updates Documentation updates Ranking updates New YouTube videos Recent podcast episodes Home Search Central Documentation Send feedback How to specify a canonical URL with rel="canonical" and other methods To specify a canonical URL for duplicate or very similar pages to Google Search, you can indicate your preference using a number of methods. These are, in order of how strongly they can influence canonicalization: Redirects : A strong signal that the target of the redirect should become canonical. rel="canonical" link annotations : A strong signal that the specified URL should become canonical. Sitemap inclusion : A weak signal that helps the URLs that are included in a sitemap become canonical. Keep in mind that these methods can stack and thus become more effective when combined. This means that when you use two or more of the methods, that will increase the chance of your preferred canonical URL appearing in search results. While we encourage you to use these methods, none of them are required; your site will likely do just fine without specifying a canonical preference. That's because if you don't specify a canonical URL, Google will identify which version of the URL is objectively the best version to show to users in Search . If you use a CMS, such as WordPress, Wix, or Blogger , you might not be able to edit your HTML directly. Instead, your CMS might have a search engine settings page or some other mechanism to tell search engines about the canonical URL. Search for instructions about modifying the
of your page on your CMS (for example, search for "wordpress set the canonical element"). Reasons to specify a canonical URL While it's generally not critical to specify a canonical preference for your URLs, there are a number of reasons why you would want to explicitly tell Google about a canonical page in a set of duplicate or similar pages: To specify which URL that you want people to see in search results. You might prefer people to reach your green dress product page through https://www.example.com/dresses/green/green-dress.html rather than https://example.com/dresses/cocktail?gclid=ABCD . To consolidate signals for similar or duplicate pages. It helps search engines to be able to consolidate the signals they have for the individual URLs (such as links to them) into a single, preferred URL. This means that signals from other sites to https://example.com/dresses/cocktail?gclid=ABCD get consolidated with links to https://www.example.com/dresses/green/green-dress.html if the latter becomes canonical. To simplify tracking metrics for a piece of content. With a variety of URLs, it can be more challenging for you to get consolidated metrics for a specific piece of content. To avoid spending crawling time on duplicate pages. You may want Googlebot to get the most out of your site, so it's better for it to spend time crawling new (or updated) pages on your site, rather than crawling duplicate versions of the same content. Best practices For all canonicalization methods, follow these best practices: Don't use the robots.txt file for canonicalization purposes. Google may still index URLs that are disallowed in robots.txt without their content. Don't use the URL removal tool for canonicalization. It hides all versions of a URL from Search. Don't specify different URLs as canonical for the same page using different canonicalization techniques (for example, don't specify one URL in a sitemap, but a different URL for that same page using rel="canonical" ). Don't specify a URL fragment as canonical, as Google generally doesn't support URL fragments . We don't recommend using noindex to prevent selection of a canonical page within a single site, because it will completely block the page from Search. rel="canonical" link annotations are the preferred solution. If you're using hreflang elements , make sure to specify a canonical page in the same language, or the best possible substitute language if a canonical page doesn't exist for the same language. When linking within your site, link to the canonical URL rather than a duplicate URL. Linking consistently to the URL that you consider to be canonical helps Google understand your preference. If you're using client-side rendering with JavaScript, it's important to make sure that the information about the canonical URL is as clear as possible. The best way to do this is to specify the canonical URL in the HTML source code and make sure that JavaScript doesn't change the canonical link element. If you can't set the canonical URL in the HTML source code, leave it out and only set it with JavaScript. This ensures that the information about the canonical URL is as clear as possible. Comparison of canonicalization methods The following table compares the different canonicalization methods, highlighting their strengths and weaknesses when it comes to maintenance and efficacy in different scenarios. Method and description rel="canonical" link element Add a element in the code for all duplicate pages, pointing to the canonical page. Pros: Can map an infinite number of duplicate pages. Cons: Can be complex to maintain the mapping on larger sites, or sites where the URLs change often. Only works for HTML pages, not for files such as PDF. In such cases, you can use the rel="canonical" HTTP header. rel="canonical" HTTP header Send a rel="canonical" header in your page response. Pros: Doesn't increase page size. Can map an infinite number of duplicate pages. Cons: Can be complex to maintain the mapping on larger sites, or sites where the URLs change often. Sitemap Specify your canonical pages in a sitemap. Pros: Simple to implement and maintain, especially on large sites. Cons: Google must still determine the associated duplicate for any canonicals that you declare in the sitemap. Less powerful signal to Google than the rel="canonical" mapping technique. Redirects Use permanent redirects to tell Google that a redirected URL is a worse version than the URL it redirects to. Use this only when deprecating a duplicate page. AMP variant If one of your variants is an AMP page, follow the AMP guidelines to indicate the canonical page and AMP variant. Use rel="canonical" link annotations Google supports explicit rel canonical link annotations as described in RFC 6596 . rel="canonical" annotations that suggest alternate versions of a page are ignored; specifically, rel="canonical" annotations with hreflang , lang , media , and type attributes are not used for canonicalization. Instead, use the appropriate link annotations to specify alternate versions of a page; for example, link rel="alternate" hreflang for language and country annotations. You can provide the rel="canonical" link annotations in two ways: The rel="canonical" link element in the HTML The rel="canonical" link HTTP header We recommend that you choose one of these and go with that; while supported, using both methods at the same time is more error prone (for example, you might provide one URL in the HTTP header, and another URL in the rel="canonical" link element). The rel="canonical" link element A rel="canonical" link element (also known as a canonical element ) is an element used in the head section of HTML to indicate that another page is representative of the content on the page. Suppose you want https://example.com/dresses/green-dresses to be the canonical URL, even though a variety of URLs can access this content. Indicate this URL as canonical with these steps: Add a element with the attribute rel="canonical" to the section of duplicate pages, pointing to the canonical page. For example: