“Indexed, though blocked by robots.txt” reads like a contradiction, and the reason it is not is the single most useful thing to understand about robots.txt. Google respected your block. It never fetched the page. It indexed the URL anyway, using what it learned from the pages linking to it.
The status sits under Warning in the Page indexing report, not under Error and not under Not indexed, and that placement is accurate. Sometimes it is a real problem. Sometimes it is the report telling you your own instruction worked and you asked for the wrong thing. The not indexed version of the same rule, where the block held and nothing linked in, is blocked by robots.txt, and it has its own decision tree.
Why a blocked page can still be indexed
Crawling and indexing are separate. robots.txt governs the first one only. It is a fetching instruction, and Google’s documentation says so directly: Google may index pages without access to their content, for example when a page is blocked by a robots.txt directive.
So Googlebot sees a link to /example/, checks robots.txt, obeys it, and does not request the URL. But it still has the URL, the anchor text used to link to it, and whatever the linking pages say about it. That is enough to create an entry. What it does not have is your page, which is why the search result for one of these usually has no useful snippet.
The trap follows from the same fact. If you blocked the URL in robots.txt and also put a noindex tag on the page, Google cannot see the noindex, because seeing it would require fetching the page you told Google not to fetch. The two instructions cancel each other and the block wins, which is the opposite of what the person who wrote both of them intended. I have written about that collision at length in noindex vs robots.txt because it is the most common self-inflicted indexing wound there is.
Which of the two fixes you need
Google’s own next steps split on one question, and it is a question about intent rather than about the site.
If you did want the URL out of Google. Remove the robots.txt block and add a noindex robots meta tag or X-Robots-Tag header instead. That order matters. Unblock first, so Googlebot can fetch the page and read the tag, then wait for the recrawl. When it works, the URL moves to the URL marked ‘noindex’ status, which is the success state here. Leaving both in place is the state that never resolves.
If you did not want the URL blocked at all. Fix the robots.txt rule. Use the robots.txt report in Search Console to find which line matched, because on a file with a dozen rules the culprit is rarely the one you expect. A trailing wildcard or a directory disallow written for one path often catches three.
If the URL should be neither crawled nor cared about. This is the third case Google does not spell out, and on most sites it is the largest one. Faceted URLs, internal search results, tracking parameters. If nothing meaningful links to them and they carry no snippet, they cost you nothing beyond a row in a report. Leaving a warning in place on purpose is a legitimate decision as long as it is a decision.
How to tell which case you are in
Export the URL list rather than reading the count. The count tells you nothing; the URLs sort themselves in about a minute.
Then for anything that looks like a real page, run it through URL Inspection and look at the referring page Google reports. A URL in this bucket is here because something linked to it, and once you know what linked to it you usually know immediately whether it matters. An external site linking to your staging path matters. Your own footer linking to a disallowed print view does not, and it is also something you can fix at the source instead of at robots.txt.
The counts move slowly after a fix, and that is normal rather than a sign of failure. Google has to recrawl the linking pages, and blocked URLs are low priority by definition. If you want the timing intuition, it is the same recrawl-driven lag behind everything in the report, which I covered in how long Google takes to index.
This status also has a public face most people never connect to it. Search for one of these URLs and the result usually carries no description at all, just the line no information is available for this page. Same cause, different dashboard, wording so different that the two rarely get filed together.
One disallow line, and why it stays
This site’s robots.txt has exactly one disallow in it, /reports/, which holds client deliverables. Those are public URLs so a client can open one without a login, and they are not mine to put into Google.
By the logic above that is technically the wrong tool. A noindex header on the directory would be the airtight version, and if one of those URLs ever appears in this exact status I will switch to it that day. I have kept the robots.txt rule because nothing links to those paths from anywhere, which is the condition that decides the whole thing. That is the honest version of the trade-off and it is worth stating plainly: robots.txt is a crawl instruction that usually keeps things out of the index, and “usually” is the entire content of this status.
On WordPress the same trade-off comes with an extra trap, because there is no file to read: the WordPress robots.txt is assembled per request, so the rule you think is live may be one a plugin supplies and a stale real file overrides.
When the stakes are higher than a client report, do not rely on usually. Anything that must not appear in Google needs noindex or authentication, and the reason I keep saying that is how often the audits I run find both directives fighting on the same URL. If you want the wider map of how each status connects to the next, the Search Console indexing status guide walks all of them.
Sources
- Google Search Console Help, Page indexing report, the “Indexed, though blocked by robots.txt” warning and the “Blocked by robots.txt” reason, checked 29 August 2026
- Google Search Console Help, indexing definition, on Google indexing pages without access to their content
- Google Search Central, robots.txt introduction, on what robots.txt does and does not control
- Google Search Central, block search indexing with noindex, on the meta tag and the header
- Google Search Console Help, URL Inspection tool, for the referring page and the live test
