Noindex vs Robots.txt Disallow: Which One You Actually Need

By Faaiz Mahmood · Updated 11 September 2026 · 8 min read

The short version

  • Disallow stops a crawler fetching the page. It does not stop the URL appearing in search.
  • Noindex stops the page appearing in search, but only if the crawler is allowed to fetch it and read the tag.
  • Using both together breaks the noindex. The crawler never sees it.
  • Want a page out of Google? Allow the crawl, add noindex, wait.

These two controls look interchangeable. They are not, and mixing them up is behind one of the most common complaints in technical SEO: a page you deliberately blocked is still showing in Google, usually with the words No information is available for this page where the description should be.

The confusion comes from a single assumption that feels obvious and is wrong: that blocking a crawler from a page removes the page from search. It does not. Here is why.

1. Crawling and indexing are two different jobs

A search engine does three things in sequence. It crawls, meaning it fetches the page. It indexes, meaning it decides to store the page and make it eligible for results. Then it ranks, meaning it decides where the page sits among competitors.

Robots.txt only touches the first step. Noindex only touches the second. Once you hold those apart, the rest follows naturally.

2. What Disallow actually does

A Disallow line in robots.txt tells a crawler not to request the URL:

User-agent: *
Disallow: /private-page/

Googlebot reads this and does not fetch the page. It never sees the content, the title, or any tag inside the HTML.

But Google can still know the URL exists. If another site links to /private-page/, or you link to it from your own navigation, Google records the address. It now has a URL it believes is a real page, and no way to look inside it. In some cases it will list that URL in results anyway, using the anchor text of the links pointing at it, with no description.

That is the state Search Console reports as Indexed, though blocked by robots.txt. It is not a bug. It is exactly what you asked for: do not read this page. You never said do not list it.

3. What noindex actually does

Noindex is a tag in the page itself, in the <head>:

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

Or an HTTP header, which is the option for non-HTML files like PDFs where there is no <head> to put a tag in:

X-Robots-Tag: noindex

Either way the instruction is unambiguous: you may read this page, you may not list it. Google honours that strictly. A page with a noindex tag that Google can fetch will come out of the index, reliably, usually within a few weeks of the next crawl.

The follow part matters more than people think. It tells Google to keep following links on the page and passing value through them. Use noindex, nofollow and you cut the page off entirely, which is rarely what you want on something like a paginated archive that links to real content.

4. The trap: using both at once

This is the single most common mistake, and it is worth stating plainly.

If you disallow a URL in robots.txt and put a noindex tag on it, the noindex will never work. Googlebot obeys the robots.txt rule, never fetches the page, and therefore never reads the tag telling it to drop the page. The page stays in the index indefinitely, because the instruction to remove it is sitting behind a door you locked.

The fix feels backwards and is correct: unblock the page in robots.txt so the crawler can get in and read the noindex. Once the page has dropped out of the index, you can block it again if you want to save crawl budget, though at that point there is usually no reason to.

5. Which one to use, by what you actually want

What you wantUse this
Page out of search resultsnoindex, crawlable
Stop bots wasting time on thousands of filter URLsrobots.txt disallow
Keep a staging site entirely out of GoogleHTTP password, not robots.txt
Genuinely private or sensitive contentLogin or password. Neither control is security.
Page deleted for goodReturn 410 Gone (or 404)
Page moved301 redirect to the new URL
Duplicate of another page you want to keepCanonical tag, not noindex

Two of those deserve a note. Robots.txt is not security, ever. The file is public, so listing /admin-backup/ in it tells every passing scraper exactly where to look. And a duplicate page usually wants a canonical tag rather than noindex, because canonical consolidates ranking signals into the page you kept, while noindex simply throws them away.

6. Getting a page that is already indexed back out

Work in this order:

  1. Check robots.txt first. If the URL is disallowed, remove that rule. Nothing else will work until you do.
  2. Add the noindex tag to the page head, or the X-Robots-Tag header for a non-HTML file.
  3. Confirm Google can see it. Use the URL Inspection tool in Search Console and look at the rendered HTML it fetched. If the tag is not in what Google fetched, it does not count.
  4. Request indexing on that URL to push a recrawl rather than waiting for the normal cycle.
  5. Use Removals for anything urgent. The Removals tool hides a URL from results in about a day, but only for roughly six months. It buys you time, it is not the fix. The noindex is the fix.

Then wait. Removal is not instant even when everything is right, because it happens on Google's recrawl schedule. A few days to a few weeks is normal.

7. The robots.txt noindex directive is dead

You will still find blog posts recommending this:

User-agent: *
Noindex: /private-page/

Google supported that unofficially for years and stopped honouring it on 1 September 2019, when it standardised its robots.txt parser. It was never part of the specification. Lines like that are ignored today, which means anyone still relying on them has pages in the index they think are hidden. If you inherited a robots.txt from someone else, this is worth grepping for.

8. Crawl budget is the one good reason to disallow

None of this makes robots.txt useless. It is the right tool when the problem is volume rather than visibility.

A shop with faceted navigation can generate hundreds of thousands of URL combinations, all returning near-identical pages. You do not need each of those crawled, evaluated and marked noindex one by one. Blocking the pattern in robots.txt stops the crawl at the door and leaves the allowance for pages that matter:

User-agent: *
Disallow: /*?colour=
Disallow: /*?sort=
Disallow: /search/

The trade-off is that any of those URLs already in the index will stay there, because you have just blocked the crawler from reading the noindex. So the order matters: noindex first, let them drop out, then block the pattern. Crawl budget covers when this is worth the effort, which for most sites is never.

9. Checking your work

Three checks, none of which take long:

If you are writing or editing robots.txt rules, the robots.txt generator on the home page will produce a correctly formatted file you can copy straight in.

Who writes this

Faaiz Mahmood is a software engineer with a bachelor's degree in computer science. He works on full-stack projects and as an AWS cloud engineer, and builds and maintains everything on crawlkit.online.

That is the relevant qualification here rather than an SEO one. The rules these tools apply are written down in public specifications: RFC 9309 for robots.txt, the sitemaps protocol, Google's own published documentation. Plenty of free tools built on them implement the details incorrectly. These are written against the specification, and each page sets out the rules it follows so you can check the reasoning instead of trusting the output.

Found something wrong? Tell me and I will fix it.