
Robots.txt, noindex, and canonical solve three different problems. Robots.txt controls whether a crawler may request a URL. Noindex tells a search engine not to show an accessible URL in search results. Canonical identifies the preferred version among duplicate or very similar pages.
The right choice begins with the business outcome, not with an SEO plugin setting. For each URL, decide whether it should be public, crawlable, eligible for Google, the preferred version, redirected, or removed.
| Desired outcome | Primary action | What to verify |
|---|---|---|
| Keep the page in Google | Allow crawling, keep it indexable, and use a self-canonical | Internal links and the sitemap support the same URL |
| Keep the page public but out of Google | Use noindex | Robots.txt does not block Google from reading the directive |
| Consolidate a duplicate with a preferred page | Use canonical | The pages are duplicate or very similar, and other signals agree |
| Send visitors from an old URL to its replacement | Use a permanent redirect | The redirect goes directly to the correct final URL |
| Keep information private | Require authentication or another real access restriction | Search directives are not being treated as security controls |
| Remove a non-HTML file such as a PDF from Google | Send X-Robots-Tag: noindex in its HTTP response | The file remains crawlable until Google processes the header |
These controls can work together, but only when they support one clear decision. A blocked URL with noindex, a canonical pointing to a non-indexable page, or a sitemap filled with duplicate versions sends conflicting signals.
Ask these questions in order:
noindex do not make information private.noindex and keep it crawlable.This sequence separates access, crawling, indexing, and consolidation. It also helps prevent a site-wide rule from being applied to URLs with different purposes.

A robots.txt file tells compliant crawlers which URLs they may request. It is normally available at the root of a host, such as:
https://example.com/robots.txt
A basic rule may look like this:
User-agent: *
Disallow: /internal-search/
Robots.txt can help control crawling of utility paths or large groups of low-value technical URLs. It can also reduce repeated crawler requests to spaces that do not need to be explored.
Google's official robots.txt guidance makes an important distinction: robots.txt manages crawler access, but it is not a reliable way to keep a web page out of Google. Google may still discover a blocked URL through links and index the address without crawling its content.
Do not use robots.txt as:
If a URL contains a noindex or canonical directive that Google must process, blocking the URL can prevent Googlebot from reading it. The same issue applies when important CSS or JavaScript resources are blocked and Google needs them to understand the page's primary content or links.
For large filter and parameter spaces, robots.txt may be one part of the solution, but the full decision belongs to a faceted navigation strategy that separates useful landing pages from utility combinations.

Noindex is appropriate when a page may remain public and usable but should not appear in Google Search. For an HTML page, it is commonly provided in a robots meta tag:
<meta name="robots" content="noindex">
The critical requirement is crawl access. Google must fetch the URL before it can see the directive. If robots.txt blocks the page, noindex may never be processed and the URL can remain in search results. Google documents this requirement in its official noindex guidance.
Use this order:
noindex in the HTML or HTTP response;Possible uses include internal search results, thank-you pages, and public utility pages that have no independent search purpose. A lack of traffic is not enough reason to add noindex. First decide whether the page needs better content, a redirect to a true replacement, consolidation with a duplicate, or removal.
Noindex also does not transfer signals to another page. If the real objective is to consolidate duplicate versions, canonical is the more appropriate control.
Non-HTML resources do not have an HTML <head>. Google supports the X-Robots-Tag HTTP response header for PDFs, images, videos, and other files:
HTTP/1.1 200 OK
Content-Type: application/pdf
X-Robots-Tag: noindex
The header must be present in the live response for the file itself. The robots meta tag and X-Robots-Tag specifications also confirm that a URL cannot be blocked in robots.txt if Google needs to discover and apply its indexing rules.

Canonical is used when multiple URLs contain duplicate or very similar content and one should be treated as the preferred version.
<link rel="canonical" href="https://example.com/preferred-page/">
Common examples include parameter variants, alternate paths to the same product, and duplicate category URLs. The canonical target should be the version you want users and search engines to recognize as the owner.
Canonical is a strong signal, not an unconditional command. Google's canonical documentation states that redirects and rel="canonical" are strong signals, while sitemap inclusion is weaker. Google still evaluates content similarity and the other signals it receives.
Support the preferred URL consistently:
Use an absolute canonical URL with the correct protocol, host, and path. This reduces the risk of a template producing a staging hostname or another unintended destination.
Do not use canonical to merge pages that answer different questions. Google may ignore the annotation, and users still reach both pages. When an old URL has moved permanently, a redirect is usually the clearer solution because visitors are sent to the replacement. The implementation details belong to the separate guide to HTTP status codes and redirects.

| Conflict | Why it fails | Recommended correction |
|---|---|---|
Robots.txt blocks a URL with noindex | Google cannot crawl the page to read noindex | Allow crawling until the directive is processed |
| Robots.txt blocks a URL whose canonical must be read | Google cannot evaluate the page-level canonical | Allow crawling or consolidate with a redirect when appropriate |
Canonical points to a noindex page | The proposed owner is not eligible to appear in Search | Choose an indexable canonical owner |
| Canonical points to a redirect or error URL | The target is not the final working page | Point directly to the final indexable URL |
| Canonical points to substantially different content | The pages do not belong in one duplicate group | Keep separate owners or use the correct redirect or removal decision |
| Sitemap includes duplicate or permanently noindexed URLs | The sitemap supports URLs the site does not want indexed | Include canonical, indexable owner URLs |
| Internal links point to duplicate versions | The site's navigation supports a different URL from the canonical | Update links to the preferred version |
| Hreflang references non-canonical language URLs | Language and canonical signals disagree | Reference the canonical URL for each language version |
A self-canonical does not override noindex. One signal says the page is the preferred version, while the other says it should not appear in Search. Decide the intended outcome first.
Do not stop at the CMS or SEO plugin interface. Verify what the website actually returns.
Record the final URL, status code, redirect chain, content type, and any X-Robots-Tag header.
Confirm that the page contains one clear robots directive and one canonical element. Check the complete canonical URL, including protocol, host, path, and trailing-slash policy.
Make sure JavaScript does not replace the canonical, add an unexpected noindex, or hide the primary content and internal links. The separate JavaScript SEO guide explains how to compare the initial and rendered output.
Check that the XML sitemap, internal links, hreflang, structured data, and redirect destinations all support the same preferred URL. Google recommends placing the URLs you want to see in search results in the sitemap.
A correct live implementation does not mean Google has processed it yet. Compare the user-declared canonical with Google's selected canonical, review the last crawl, and monitor the Page indexing report in Search Console.
One incorrect directive on one page can often be corrected after a direct check. A template-level problem is different. It may affect categories, filter combinations, language versions, pagination, media files, and thousands of parameter URLs at once.
In that situation, a technical SEO audit can map which URL groups are blocked, noindexed, duplicated, redirected, or canonicalized incorrectly. It can also identify whether the source is robots.txt, a page template, an HTTP header, an XML sitemap, internal links, hreflang, or a CMS plugin.
The goal is a prioritized correction plan that protects important pages and fixes the rule at its source, rather than changing individual URLs one at a time.