Blocked by robots.txt (GSC Status)

What the Google Search Console "Blocked by robots.txt" Page Indexing status means — a URL excluded from indexing because robots.txt disallowed crawling. Usually intentional. How it differs from "Indexed, though blocked," why noindex + disallow conflict, and how to fix it if the block was a mistake.

First published: Jun 23, 2026 · Last updated: Jul 17, 2026 · Advanced
demand #10 in Indexing#31 in How Search Works#165 in Technical SEO#213 on the site
1 evidence signal on this page

"Blocked by robots.txt" is a Google Search Console Page Indexing exclusion: Google found the URL but didn't crawl it because your robots.txt disallows it, so it isn't indexed in this state. Most of the time it's intentional and fine — robots.txt controls crawling, not indexing, so a disallow is not a deindexing tool. It's a sibling to the "Indexed, though blocked by robots.txt" warning, which is the opposite outcome (Google indexed a blocked URL anyway, usually via links). The big gotcha: noindex + disallow conflict — Google can't crawl a disallowed page, so it never sees the noindex. To remove a page, allow crawling and serve noindex. Only "fix" this status when you blocked something you actually wanted indexed.

TL;DR — “Blocked by robots.txt” is a Page Indexing exclusion: Google discovered the URL but didn’t crawl it because robots.txt disallows it, so it isn’t indexed in this state. It’s normally intentional and benign — robots.txt governs crawling, not indexing, so a disallow is never a deindexing tool. Don’t confuse it with the warning “Indexed, though blocked by robots.txt” (Google indexed a blocked URL anyway, usually via inbound links). The classic mistake is pairing disallow with noindex: Google can’t crawl the page, so it never sees the noindex and the page can stay indexed. To remove a page, allow crawling and serve noindex. Only treat this status as a bug when you blocked a URL you actually wanted indexed.

What the status actually reports

In the Search Console Page Indexing report, “Blocked by robots.txt” is an excluded state, not an error and not a warning. Google’s own wording is plain: the page “was blocked by your site’s robots.txt file,” and Google adds the important caveat that this “does not guarantee that the page won’t be indexed through some other means.” Evidence for this claim Google reports Blocked by robots.txt when crawling is disallowed and warns that this does not guarantee the URL cannot be indexed by other means. Scope: Google Search Console report terminology and documented Search behavior; the label alone may not prove the underlying root cause. Confidence: high · Verified: Google: Page indexing report That caveat is the whole topic in one line — see below.

Mechanically: Googlebot knows the URL exists (it found it via a link, a sitemap, or history), tried to respect your rules, hit a matching Disallow, and stopped. No fetch means no content to index, so the URL sits in this excluded bucket. This is the expected result of a disallow — most URLs in here are supposed to be in here.

Crawling is not indexing — why a disallow doesn’t deindex

Google documents robots.txt as crawl-access control, not a reliable removal mechanism. Evidence for this claim Google says robots.txt manages crawler access and is not a mechanism for keeping a page out of Google. Scope: Google Search Console report terminology and documented Search behavior; the label alone may not prove the underlying root cause. Confidence: high · Verified: Google: robots.txt introduction

This is the accuracy spine of the whole status. robots.txt is a crawl control. Google is explicit that it “is not a mechanism for keeping a web page out of Google.” Blocking a URL prevents the fetch; it does not remove the URL from the index, and it is not a deindexing tool.

As I’ve put it in my Ahrefs article on the sibling status: “crawling and indexing are two different things.” A page you block can still end up indexed if other pages link to it — Google just can’t see the content, and it can’t see any noindex you tried to put there either. Which leads to the single most common mistake people make when they land on this report.

”Blocked by robots.txt” vs “Indexed, though blocked by robots.txt”

These two get conflated constantly, and they’re the same cause with opposite outcomes:

Blocked by robots.txtIndexed, though blocked by robots.txt
Report bucketExcluded (not indexed)Warning (indexed)
What happenedGoogle found the URL, didn’t crawl it, isn’t indexing itGoogle indexed the URL despite not crawling it
WhyDisallow worked, nothing forced indexingDisallow worked, but links/signals indexed it anyway
Is it usually a problem?No — typically intentionalDepends — often fine for utility URLs

If you’re staring at the warning version — a blocked URL that got indexed anyway, showing as a bare URL with no description — that’s the indexed-though-blocked case, and it’s handled in its own write-up. This article is about the plain exclusion: blocked, and not indexed.

For utility URLs, “indexed anyway” is often nothing to worry about. John Mueller, addressing a site owner whose WooCommerce ?add-to-cart= URLs showed up as indexed-though-blocked, said you don’t need those URLs indexed, that blocking them with robots.txt is fine, and that even if they get “indexed” while blocked, they’re unlikely to actually surface in search unless someone runs a very specific query for those URLs — which real users don’t.

The noindex + disallow conflict (the #1 fix that backfires)

Here’s the trap. Someone wants a page gone, so they Disallow it in robots.txt and add a noindex meta tag — belt and suspenders. It doesn’t work, because the two instructions contradict each other.

Google states the rule directly: “For the noindex rule to be effective, the page or resource must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler.” If the page is disallowed, Google never crawls it, never sees the noindex, and the page can stay indexed. As I’ve written in my article on “Indexed, though blocked by robots.txt”: unless Google can crawl a page, it won’t see the noindex tag and may still index it because it has links.

So the deindex sequence is the opposite of what people reach for:

  1. Allow crawling of the URL (remove the Disallow).
  2. Serve noindex (meta robots tag or X-Robots-Tag header) and let Google re-crawl to see it.
  3. Leave the page crawlable with noindex in place once it’s dropped. Re-blocking it afterward isn’t a safe “finishing move” — if you disallow the URL again, Google can lose visibility into the noindex rule on the next crawl, and a blocked-but-linked URL can get indexed again from other pages’ links, which is the exact “indexed, though blocked” outcome you were trying to avoid. If crawl budget on the removed page is a real concern, that’s a case for authentication or deletion (404/410) — not a return trip through robots.txt.

For urgent removals, the Search Console Removals tool, password protection, or simply deleting the page (returning 404/410) are the faster routes.

How to find which rule is blocking the URL

Three tools, each doing a different job — don’t expect one to do the others’ work:

  • URL Inspection (GSC). Paste the specific URL. It tells you whether that URL is currently blocked and is the quickest per-URL check.
  • robots.txt report (GSC). A domain-property-level monitoring report — not an editable tester — showing the robots.txt files Google found for your top hosts, the last-fetched time, fetch status, and any parsing warnings, plus a “request a recrawl” action after you change the file. It tells you Google can see your file; it doesn’t test individual URLs against it.
  • A robots.txt validator or Google’s open-source robots.txt parser. To see which line matches a given URL, run it through a validator — because the longest, most specific matching rule wins (and an Allow can override a broader Disallow).
Evidence for this claim The current Search Console robots.txt report shows fetched files, history, fetch status, and parsing issues and can request a file recrawl; for a specific URL Google points to URL Inspection, a validator, or its open-source robots library rather than an editable legacy GSC tester. Scope: robots.txt diagnosis Confidence: high · Verified: Unblock a page blocked by robots.txt

Once you’ve found the offending line, the fix depends on where your robots.txt lives. If you control the file directly, remove or correct the rule (and mind the syntax). If you’re on a hosted platform like Wix, Shopify, or Squarespace, you may need to follow that provider’s specific docs to change it, since some platforms manage robots.txt for you.

My own experiment: what happens when you block a page you wanted indexed

The genuinely useful question is: if you accidentally block a page that should rank, how bad is it? I ran that test directly. On January 30, 2023 I blocked two of our actually-ranking pages — “Top Bing Searches” and “Top YouTube Searches” — with robots.txt and tracked what happened.

The damage was real but smaller than I expected. We lost a position here or there (a few keywords slipped one or two spots, a couple even gained), and we lost all the featured snippets for those pages while they were blocked — they came back after I unblocked. The SERP appearance degraded too: Google showed “no information is available for this page” instead of the meta description, and lost our custom titles. And because the listing looked worse, clicks dropped more than impressions did — the CTR took the hit.

My summary at the time: “We lost a position here or there and all of the featured snippets for the pages. I expected a lot more impact, but the world didn’t end.” And the takeaway I’d still stand behind: don’t block pages you want indexed. It hurts. Not as bad as you might think — but it still hurts. That’s the right mental frame for this report. If everything in your “Blocked by robots.txt” bucket is stuff you meant to block, you’re fine. If a page you care about is in there, get it out.

One scope note on this experiment: both pages were already ranking and indexed before I blocked them, so what I measured is what happens when an indexed page gets pushed into the “indexed, though blocked” state — not what happens to a URL that was never indexed and is simply sitting in this exclusion bucket. If a URL here was never indexed to begin with, unblocking it just lets Google crawl and consider it normally; there’s no featured-snippet or CTR history to lose, because it was never there.

The decision tree

  • Did you mean to block it? → Leave it. Working as intended.
  • No — you want it indexed? → Remove/loosen the robots.txt rule, then request indexing.
  • You want it gone from Google? → Don’t use a disallow. Allow crawling + noindex (or Removals tool / delete), then leave it crawlable — re-blocking it afterward can hide the noindex rule again.
  • It’s a blocked URL that got indexed anyway? → That’s the indexed-though-blocked case, not this one — handle it there.
  • The page has sensitive or private content? → robots.txt isn’t an access control; it’s a request bots can ignore. Use authentication or password protection, not a disallow.

The crawl-vs-index principle is universal, by the way: Bing honors robots.txt for crawling the same way, and removing a URL from Bing similarly uses its Block URLs tool or a noindex on a crawlable page — not a bare disallow.

For the broader file itself — syntax, wildcards, where it lives, and what it can and can’t do — see the robots.txt guide. For how indexing decisions get made upstream, see the indexing hub.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.