ON THIS PAGE 10 sections
>_ AGENT MODE AI agent? Skip the interface. Read as Markdown
DIRECT ANSWER
Q. What is the difference between robots.txt and noindex?
A. robots.txt is a crawl policy that tells compliant crawlers which URLs they may request. Noindex is an indexing rule delivered in an HTML meta tag or X-Robots-Tag HTTP header; a supporting crawler must fetch the resource to process it. Robots.txt does not reliably remove a URL from search, and noindex does not protect confidential content.
EVIDENCE Google’s documentation states that robots.txt is not a supported place for a noindex rule and that blocked URLs may still be indexed without content. RFC 9309 standardizes the Robots Exclusion Protocol as a crawler access convention.

“Block this page from Google” is not a complete technical requirement.

It can mean stop crawler requests, remove the page from search results, hide part of a snippet, consolidate a duplicate, protect confidential content, or remove a URL quickly during an incident. Those outcomes use different controls.

Robots.txt and noindex are often compared as alternatives. They operate at different stages of the technical SEO control system, so the right choice starts with the outcome you need.

Start with the outcome

Use this four-question protocol before changing a rule:

  1. Should a crawler be allowed to request the URL?
  2. Should the resource be eligible to appear in search?
  3. Should its content or snippets be exposed publicly?
  4. Should an unauthenticated person or bot be able to access it at all?

The answers map to crawl policy, indexing rules, presentation controls, and access enforcement. Combining them into one “blocked” status creates errors that are hard to observe and slower to reverse.

CONTROL SELECTION PROTOCOL · V2026.07

Choose the control by the outcome.

What must change?
FETCHINGUse robots.txtPublic crawl policy, not access control
INDEXINGUse noindexMeta tag for HTML, X-Robots-Tag for files
ACCESSRequire authenticationPrivate content needs enforcement
Control-to-outcome matrix
Intended outcomePrimary controlFetch consequenceIndex consequence
Save crawl capacityrobots.txtCrawler may not fetch the bodyNot a reliable removal method
Keep an HTML page out of searchmeta robots noindexCrawler must fetch the pageRemoved after the rule is processed
Keep a PDF or file out of searchX-Robots-Tag: noindexCrawler must fetch the responseRemoved after the header is processed
Protect confidential contentAuthentication / authorizationUnauthorized crawler receives no contentAccess is actually restricted
Merge duplicate URL signalsRedirect or rel=canonicalDepends on the chosen methodConsolidation request, not secrecy
Critical contradiction: if robots.txt blocks a URL, a crawler may be unable to see the noindex rule on that URL. Remove the crawl block long enough for noindex to be processed when the goal is de-indexing.

Robots.txt controls requests

Robots.txt is a public file at the origin root, such as https://example.com/robots.txt. Under the Robots Exclusion Protocol standardized in RFC 9309, compliant crawlers retrieve the file and evaluate rules for their user agent before requesting covered paths.

A minimal example:

User-agent: *
Disallow: /internal-search/

Sitemap: https://example.com/sitemap.xml

The rule says compliant crawlers should not fetch matching paths. It does not delete the URLs, protect them with authentication, or guarantee they cannot appear in an index.

Robots.txt fits crawl-space management: infinite search results, nonessential parameter combinations, repeated utility endpoints, and resources that should not consume compliant crawler requests. Even then, the strongest solution may be to stop generating or linking the crawl trap.

Rules are scoped by protocol, host, and port. A file on www.example.com does not automatically govern shop.example.com, and a staging hostname needs its own protection. Test the final public file rather than a CMS preview.

Noindex controls search eligibility

A noindex rule tells supporting search engines not to show the resource in search results after the rule is processed.

For HTML:

<meta name="robots" content="noindex,follow">

For any response, including PDF, video, image, or generated files:

X-Robots-Tag: noindex

Google’s noindex guidance says the meta tag and response header have the same indexing effect. The practical choice depends on the resource and the layer you control.

Noindex fits public utilities that need to work for users but should not become search results: account pages, internal search, confirmation screens, temporary campaign variants, or downloadable files not intended for discovery.

The rule must be present in the response Googlebot can fetch. A client-side script that adds noindex after load creates unnecessary uncertainty. Server output or response headers are easier to inspect.

The blocked-noindex contradiction

This combination is the most common conceptual failure:

robots.txt: Disallow: /private-ish/
HTML: <meta name="robots" content="noindex">

If the crawler obeys the first rule, it cannot fetch the HTML to see the second. The URL may remain known through links and can appear in search without content-derived information.

When removing an already indexed URL, allow crawling and expose noindex until the index state changes. Then decide whether long-term crawl blocking is still useful. Preserve the evidence: date applied, response header or HTML capture, Search Console state, and date verified.

Do not solve this by placing Noindex: /path/ inside robots.txt. Google explicitly states that noindex is not supported in robots.txt.

Access protection is a separate boundary

Robots.txt is public and voluntary. Noindex is a presentation rule for search systems. Neither stops a person, scraper, or unrecognized crawler from requesting a public URL.

Confidential data requires authentication, authorization, and an appropriate response for unauthenticated requests. Avoid leaking private URLs into public sitemaps, HTML, feeds, analytics exports, or asset manifests.

For a private application route, a useful acceptance test is:

Unauthenticated request → 401/403 or login flow
Authorized request      → intended resource
Public sitemap          → URL absent
Public navigation       → no unintended exposure

Security is not an SEO directive.

Snippet controls are not indexing controls

nosnippet, max-snippet, max-image-preview, max-video-preview, and data-nosnippet influence how supported search results may present content. They do not necessarily remove the URL from the index.

Google’s robots meta specifications document page-level and text-level presentation controls. Use them only when a business or licensing requirement outweighs the value of useful result previews.

A page can be indexed with a restricted snippet. A page can be crawlable and noindexed. A page can be blocked from crawling yet still known by URL. Name the state precisely.

Canonicalization is not removal

Rel=canonical nominates the owner of duplicate or near-duplicate content. It is not the same as noindex.

Use the canonical tag protocol when signals should consolidate to one URL. Use noindex when the current URL should not appear and there is no duplicate-owner relationship to preserve. Use a redirect when users and crawlers should move to a replacement.

Google advises against using noindex merely to force canonical selection inside one site. A canonical conflict needs coherent ownership signals, not a hidden alternate.

Platform failure patterns

WordPress and WooCommerce

SEO plugins can add noindex to archives while caching or security plugins emit a different X-Robots-Tag. Inspect the final response. Check media attachment pages, author/date archives, internal results, product filters, feeds, and staging hosts separately.

Do not globally block /wp-content/ or required rendering assets without a measured reason. A broad rule can make page rendering and diagnostics less representative.

Shopify

Shopify manages parts of robots.txt and exposes supported customization through its theme system. Treat generated product, collection, search, cart, account, and filter routes by purpose. Do not paste a generic blocklist that hides canonical evidence or required storefront assets.

JavaScript applications

Set directives in the server response for routes that should never be indexed. If the application changes metadata after hydration, compare response HTML and rendered DOM, then verify which state crawlers receive.

Build a control inventory

For each rule or template, record:

  • URL pattern and owner team;
  • intended crawl state;
  • intended index state;
  • intended access state;
  • robots.txt rule and tested user agent;
  • HTML robots meta and HTTP X-Robots-Tag;
  • canonical and redirect behavior;
  • sitemap membership and internal inlinks;
  • observed Search Console state;
  • deployment date, verification date, and rollback condition.

This inventory prevents one team from “fixing” crawl volume while another waits for noindex to be processed.

Verify the actual outcome

Do not close a ticket because a source file changed.

For robots.txt, request the public file on every relevant host, test representative allowed and disallowed URLs, and inspect logs for the intended crawler behavior.

For noindex, inspect the final HTTP headers and raw HTML, verify the resource remains crawlable, then observe the index state over time. Search Console URL Inspection can provide Google-specific evidence; server logs confirm fetches; neither replaces the other.

For access control, test unauthenticated and authorized requests outside the application session.

The Technical SEO Field Kit keeps those states in separate columns so “blocked” cannot conceal four different requirements.

Questions people actually ask
FAQ · 5
Q01 Can a robots.txt blocked page appear in Google? +
Yes. Google may know the URL from links and index the URL without crawling its content. The result may have a limited or missing snippet. Use noindex for removal and allow crawling long enough for the rule to be processed.
Q02 Can I put noindex in robots.txt? +
Do not. Google does not support noindex as a robots.txt rule. Deliver noindex in the HTML head or an X-Robots-Tag response header.
Q03 Does noindex save crawl budget? +
Not directly. The crawler must fetch a page to discover and re-check noindex. A long-term noindex URL may be crawled less often, but crawl control and indexing control remain separate decisions.
Q04 How do I noindex a PDF? +
Return an HTTP response header such as X-Robots-Tag: noindex for the PDF URL. A meta tag cannot be added to a non-HTML file.
Q05 How do I keep private content out of search? +
Require authentication or authorization and avoid exposing public copies. Robots controls are voluntary crawler instructions, not access controls.
Sources & further reading
  1. [01] DOC
  2. [02]
    Block Search indexing with noindex
    Google Search Central
    DOC
  3. [03]
    Introduction to robots.txt
    Google Search Central
    DOC
  4. [04] STANDARD
Markdown version: index.md
INBOX · TWICE A MONTH
Notes from the lab, in your inbox.

The same pipelines I run for paying clients — written up first for subscribers.

Niko Alho
Niko Alho

I run agentic SEO and build custom AI for B2B companies. Based in Turku.

About