How to Fix “Blocked by Robots.txt” in Google Search Console

On this page

“Blocked by robots.txt” means you stopped Google from crawling a URL, but crawling and indexing are different stages and robots.txt only governs the first. That gap is the whole story. A URL you blocked can still get indexed if enough other pages link to it, and when that happens Google shows it in results with “No information is available for this page,” a worse outcome than the page simply not appearing. The fix is matching the directive to your actual intent: robots.txt to prevent crawling, noindex to prevent appearance in search. Confusing the two is the single most common reason a page you tried to hide keeps showing up.

Crawl and index are different stages

Robots.txt operates before the fetch. When Googlebot considers a URL, it checks robots.txt first; if a rule disallows it, Google never downloads the page content. Indexing is a later decision about whether a URL deserves a place in search results. The critical consequence is that robots.txt blocks fetching, not listing. Google can still know a URL exists from links pointing at it, and it can decide that URL is worth surfacing even though it never read the page.

So “Blocked by robots.txt” tells you crawling is being prevented. Whether that is a problem depends entirely on whether the page should be crawlable. For a genuinely private path you also protect with authentication, the block is fine and the status is expected. For a page you wanted out of search but did it with the wrong tool, the status is the start of a problem.

The failure mode: indexed without content

Watch for the related status “Indexed, though blocked by robots.txt.” It means exactly the trap above: Google indexed a URL it was not allowed to crawl, almost always because external or internal links pointed at it and Google judged it worth listing. Because Google never fetched the page, it has no title or description to show, so the result renders with an auto-generated title pulled from the URL or anchor text and the line “No information is available for this page.” Check whether this is happening with a site: search for the path or by inspecting a sample URL.

This is the precise reason robots.txt is the wrong instrument for keeping a page out of results. It can do the opposite of what you intended: instead of hiding the page, it strips the page of any content Google could display while still letting it rank URL-only.

The conflict that breaks noindex

The most frequent “why isn’t my noindex working” case comes from stacking the two directives. You add <meta name="robots" content="noindex"> to a page and also disallow it in robots.txt. Because robots.txt is evaluated before the fetch, Google never crawls the page, never reads the HTML, and therefore never sees the noindex. The directive sits there doing nothing, and if the URL has links it can still be indexed. There is no header trick that rescues this. An X-Robots-Tag: noindex HTTP header is delivered in the response to a fetch, and if robots.txt blocked the fetch there is no response to carry it. The ordering is absolute: robots.txt first, everything on-page or in-headers only after a successful crawl.

So whenever a page is supposed to be noindexed but stubbornly stays in the index, the first thing to check is whether robots.txt is blocking it. Almost always, removing the disallow so Google can finally crawl the page and read the noindex is the resolution.

This ordering insight resolves a loop that otherwise runs for weeks. Someone adds a noindex, sees the page still ranking, assumes the noindex is broken, adds a robots.txt disallow to “force” it out, and makes the problem permanent because now Google definitely cannot read the noindex. Each step feels like tightening the restriction and each step moves further from the goal. The mental model that breaks the loop is that robots.txt and noindex do not stack additively; robots.txt sits in front of the fetch and noindex sits inside the response, so blocking the fetch disables the response-level directive entirely. To remove a page from results you have to let Google in far enough to be told to leave.

Over-broad rules catch real pages

A second class of problem is a disallow rule that is wider than intended. A blanket block of anything containing a query string, written to suppress filter and tracking parameters, will also catch legitimate parameterized pages you wanted indexed. Platform defaults can be aggressive here; some e-commerce systems ship robots.txt rules that disallow large swaths of the URL space, including paths that hold real content. Replace broad pattern blocks with specific ones that target only the low-value paths, and review what each rule actually matches before shipping it. The current way to verify is the robots.txt report in Search Console, which shows the file Google last fetched and when; combine that with URL Inspection to confirm which rule applies to a given path and whether Allow or Disallow wins. The old standalone robots.txt Tester was retired, so do not rely on a stale tool name.

The correct remediation by intent

Decide what you actually want for each blocked URL, then apply the directive that matches.

To keep a page out of search results, allow the crawl and add a noindex (meta tag or X-Robots-Tag header). Google has to be able to fetch the page to see the noindex, so you must not block it in robots.txt. This is counterintuitive but correct: you let Google crawl precisely so it can learn the page should not be listed.

To truly stop Google fetching a URL, keep the robots.txt disallow, but accept that if the URL is linked it may still surface URL-only with no snippet. Robots.txt is for crawl management and crawl-budget control, not for guaranteeing a page never appears.

For staging environments and leaked URLs, robots.txt is the wrong shield entirely. Authentication is the real fix; a password-protected server returns the content to no one, including Googlebot, so nothing gets indexed. If staging URLs have already leaked into the index, do not simply block them, because that locks in the URL-only listings. Instead temporarily allow the crawl with a noindex in place, let Google fetch the pages and drop them, then put authentication back. You cannot delist a page with a noindex Google is not allowed to read.

Verify the rule before and after you change it

Because the directives interact in non-obvious ways, confirm what is actually happening rather than reasoning about it in the abstract. Open the affected URL in URL Inspection and read which rule Google applied and whether the page is crawl-allowed. If you are removing a disallow so a noindex can finally be seen, expect a sequence rather than an instant result: Google has to recrawl the now-allowed URL, read the noindex, and only then drop the page from results. Requesting indexing after the change nudges that recrawl along, but the deindexing still follows the normal cadence. The status flipping from “Indexed, though blocked by robots.txt” to crawled-and-noindexed over a recrawl cycle is the confirmation the fix took.

Robots.txt is still the right tool for crawl budget

None of this means robots.txt is obsolete. It remains the correct instrument for its actual job: managing crawl, not managing indexing. On a large site, disallowing genuinely worthless crawl paths, infinite faceted-filter combinations, internal search-result pages, session-ID variants, keeps Googlebot from spending its limited crawl capacity on pages that should never rank. The rule to keep straight is the one this whole post turns on: reach for robots.txt to stop a fetch you do not want to happen, and reach for noindex to keep a page out of results. Using each tool for its own job is what avoids the URL-only listing trap.

Frequently Asked Questions

Why does my robots.txt-blocked page still show in Google?

Because robots.txt blocks crawling, not indexing. If other pages link to the URL, Google can index it without fetching it and display it with “No information is available for this page.” To remove it, allow the crawl and add a noindex so Google can read the instruction to drop the page.

Can I noindex a page that is blocked in robots.txt?

No. Google evaluates robots.txt before fetching, so it never crawls the page and never sees the noindex in the HTML or in an X-Robots-Tag header. Remove the robots.txt disallow first; only then can Google crawl the page and honor the noindex.

Sources

Introduction to robots.txt, Google Search Central: https://developers.google.com/search/docs/crawling-indexing/robots/intro

robots.txt report, Search Console Help: https://support.google.com/webmasters/answer/6062598

Block indexing with noindex, Google Search Central: https://developers.google.com/search/docs/crawling-indexing/block-indexing