"Indexed, though blocked by robots.txt" is the GSC status that trips up the most people trying to actually remove a page from Google's index. They block the URL in robots.txt, it stays indexed anyway, so they add a noindex tag on top of the block. Weeks later, the page is still there.
The reason is simple once you see it: Googlebot can't read a noindex tag on a page it's not allowed to crawl. Blocking a URL in robots.txt and adding noindex to that same URL isn't a stronger combination, it's a contradiction. Robots.txt tells Google not to fetch the page, so Google never sees the noindex instruction sitting on it.
This guide covers why Google indexes pages it wasn't allowed to crawl in the first place, the exact sequence to actually deindex one, and how to tell which affected URLs are even worth fixing.
Who this guide is for: SEO practitioners, developers, and site owners who see "Indexed, though blocked by robots.txt" in the Google Search Console Page Indexing report, including WordPress and Shopify site owners dealing with platform-specific robots.txt handling.
How this guide was built: Cross-referenced Google's own Search Central documentation on noindex and robots.txt, reviewed Google Search Central Help Community threads on this exact status, and analyzed the top-ranking guides on this topic (including platform-specific coverage for WordPress and Shopify) to confirm which fix steps are already well covered and which get skipped.
Sources & verification: Official Google Search Central documentation is cited for how noindex and robots.txt interact. Google's own public statements are cited for why blocked URLs get indexed in the first place. Test any robots.txt change against your own site before deploying it.
What "Indexed, Though Blocked by Robots.txt" Means
Google crawled enough of your site to know a URL exists and decided it was worth indexing, even though your robots.txt file told Googlebot not to fetch it. Google Search Console flags this as its own status, distinct from a normal block.
You'll find it in Indexing → Pages → "Why pages aren't indexed."
The practical effect: the URL shows up in Google's index, but usually with a thin or missing snippet, since Google never actually crawled the page content. It only knows the URL exists.
This Is Not the Same as "Blocked by Robots.txt"
Google Search Console reports these as two separate statuses, and mixing them up leads to the wrong fix.
| GSC status | What it means | Does the URL appear in search? |
|---|---|---|
| Indexed, though blocked by robots.txt | Google indexed the URL from external signals despite being disallowed | Yes, usually with a thin snippet |
| Blocked by robots.txt | Google respected the disallow rule and never indexed the URL | No |
| Blocked due to access forbidden (403) | Server actively returned a 403 to a request Googlebot was allowed to make | No — see our 403 guide |
| Blocked due to other 4xx issue | Server returned a 4xx code other than 401, 403, or 404 | No — see our other 4xx guide |
If your URLs fall under plain "Blocked by robots.txt" with no indexing, that's expected behavior working as intended. This guide is specifically for the "indexed anyway" version.
Why Google Indexes a Page It Wasn't Allowed to Crawl
Robots.txt controls crawling, not indexing. Google can still add a URL to its index without crawling it if other signals suggest the page matters, most commonly backlinks.
Google's own John Mueller has addressed this pattern directly on a case involving disallowed parameterized URLs: "You don't need the add-to-cart URLs indexed. Blocking them with robots.txt is fine. Even if they get 'indexed' since they're blocked by robots.txt, it's unlikely that they'll be shown in search." The core mechanism he's describing is that a disallowed URL can still enter the index through discovery, just without the content Google would normally use to rank and display it well.
Common causes, in roughly the order they show up:
- External backlinks pointing to a disallowed URL. Other sites link to it, Google discovers the link, and indexes the URL as a bare reference even without crawling its content.
- Internal links leaking into blocked paths. Your own templates, navigation, or old content link to a URL your robots.txt disallows, reinforcing the same signal from inside your site.
- The URL is in your XML sitemap and disallowed in robots.txt at the same time. Submitting a URL for indexing while blocking it from crawling sends Google two contradictory instructions.
- Overly broad Disallow rules. A rule meant to block one directory (like a legacy
/search/or/tag/path) accidentally catches pages you actually want indexed. - Leftover URLs from a migration or replatform. Old paths stay linked externally long after the robots.txt rules around them changed.
The Fix Most Guides Get Wrong: Robots.txt Plus Noindex Isn't a Combo
This is the single most common mistake in fixing this status: blocking a URL in robots.txt, watching it stay indexed, and then adding a noindex tag to the same URL expecting it to finally work. It won't, and it's not a bug. It's how noindex is designed to work.
Google's Search Central documentation states it directly: for the noindex rule to be effective, the page must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler. Google has to crawl a page to see its meta tags and HTTP headers. If robots.txt disallows the page, Googlebot never requests it, never sees the <meta name="robots" content="noindex"> tag or X-Robots-Tag header sitting on it, and the noindex instruction might as well not exist.
If your goal is to actually remove the page from Google's index, the sequence has to run in this order:
- Remove or loosen the Disallow rule in robots.txt so Googlebot is allowed to crawl the page.
- Add (or confirm) the noindex tag on the page itself, either as a meta tag in the
<head>or anX-Robots-TagHTTP header. - Verify Googlebot can see it. Use the URL Inspection tool's "Test Live URL" feature and check the fetched HTML for the noindex tag, or confirm the robots.txt tester no longer shows the URL as blocked.
- Request a recrawl through URL Inspection, or wait for Google's next natural crawl of the URL.
- Confirm removal, then decide whether to re-block. Once Google has processed the noindex and dropped the page, you generally don't need robots.txt to block it again. If you do re-add the block later, do it only after confirming removal, otherwise you risk recreating the exact same contradiction.
Should You Fix Every Instance of This Status?
Not automatically. Run each flagged URL through this before touching robots.txt:
Unblock it (allow indexing) if:
- It's genuine content with search value that backlinks are already pointing to
- You want it ranking and it was disallowed by mistake
Unblock and noindex it if:
- You want the page fully out of Google's index, not just hidden from crawling
- It's the kind of low-value parameterized or duplicate URL Mueller described, where being nominally "indexed" isn't hurting you but you'd rather clean up the signal
Leave it alone if:
- The URL genuinely has no search value and isn't cluttering your reports in a way you care about
- It's part of a large, expected pattern (like faceted navigation or add-to-cart parameters) that Google itself says is unlikely to surface in search regardless of this status
Step-by-Step: Diagnose and Fix
Step 1: Export the Affected URLs
In GSC, go to Indexing → Pages, click "Indexed, though blocked by robots.txt," and export the full list.
Step 2: Categorize Each URL
Group them by pattern (parameterized URLs, a specific directory, legacy paths) before deciding case by case. This step alone usually reveals whether you're looking at one systemic issue or scattered one-offs.
Step 3: Apply the Right Fix
- Want it indexed: remove the Disallow rule covering that path in robots.txt.
- Want it deindexed: follow the unblock-then-noindex sequence above, in that order.
- Don't care either way: leave it, but check it isn't also sitting in your XML sitemap, which just reinforces the contradiction.
Step 4: Test Before You Trust It
Use Google Search Console's robots.txt tester (or the "Test Live URL" fetch result in URL Inspection) to confirm the specific URL is no longer blocked, and that any noindex tag is present in the fetched HTML.
Step 5: Validate and Monitor
Use the "Validate Fix" button in the Page Indexing report, or request indexing on individual URLs. Then check back over 1 to 4 weeks. GSC only updates this status after Google recrawls the affected URLs, not immediately after your change.
Platform-Specific Notes
WordPress
WordPress generates a virtual robots.txt by default, which SEO plugins let you override without touching server files directly:
- Yoast SEO: Tools → File editor
- Rank Math: General Settings → Edit robots.txt
- All in One SEO: Tools → Robots.txt Editor
Check for conflicting rules first. Security plugins (Wordfence, iThemes) and some caching plugins add their own Disallow rules, and it's common for two plugins to fight over the same file without either one throwing an obvious error.
Shopify
Shopify allows direct editing of robots.txt.liquid through Online Store → Themes → Edit code, so you're not stuck with the platform defaults. The common trigger on Shopify is its default Disallow rules for paths like /cart, /account, and ?variant=-style parameterized URLs, which still get indexed anyway when internal links (like "Add to Cart" buttons) point to them across the site.
Since Shopify doesn't offer a native per-page noindex setting, deindexing a specific blocked URL usually means adding a conditional {% if %} snippet to your theme's <head> to output a noindex meta tag for that URL pattern, in addition to unblocking it in robots.txt.liquid.
How to Prevent This From Recurring
- Keep your XML sitemap and robots.txt in agreement. Never submit a URL in your sitemap that's also disallowed in robots.txt.
- Audit internal links before adding new Disallow rules. If your own site links to a path you're about to block, expect this status to reappear.
- Re-check robots.txt after every migration. Legacy paths carried over from an old site structure are a common source of stale disallow rules that no longer match your current URL patterns.
- Review the Page Indexing report monthly. New instances of this status often trace back to a recent template change or a new plugin touching robots.txt.
Frequently Asked Questions
What does "indexed, though blocked by robots.txt" mean?
It means Google added a URL to its index without crawling it, usually because backlinks or internal links pointed to it, even though your robots.txt file disallows Googlebot from fetching that URL.
Is this the same as "Blocked by robots.txt"?
No. "Blocked by robots.txt" means Google respected the disallow rule and the URL was never indexed. "Indexed, though blocked by robots.txt" means Google indexed it anyway from external signals, despite the block.
Why doesn't adding a noindex tag fix this?
Because Googlebot never crawls a page that robots.txt disallows, so it never sees the noindex tag sitting on that page. Google's own documentation confirms a noindex rule only works if the page is not blocked by robots.txt and is otherwise accessible to the crawler.
What's the correct way to remove a page from Google's index if it's blocked by robots.txt?
Remove or loosen the Disallow rule so Googlebot can crawl the page, then add a noindex meta tag or X-Robots-Tag header to that page. Verify with the URL Inspection tool that Googlebot can now see the noindex tag, then request a recrawl.
Should I fix every URL flagged with this status?
No. Fix it (by unblocking) if it's valuable content you want indexed. Fix it (by unblocking plus noindex) if you want it fully out of the index. Leave it if it's a low-value parameterized URL that isn't causing any real search visibility problems.
Why do backlinks cause a blocked page to get indexed?
Google can discover a URL through a link on another site and add it to the index as a bare reference, even without crawling its content, if the link signals the URL is worth including. This is Google indexing the existence of the URL, not the page's actual content.
How long does it take for this status to clear in Search Console after I fix it?
Typically one to four weeks. The Page Indexing report only updates after Google's next crawl of the affected URLs, so check back weekly rather than expecting an immediate change after you edit robots.txt.
Does this affect WordPress and Shopify differently?
The underlying cause and fix are the same on any platform. WordPress lets you edit robots.txt through SEO plugins like Yoast, Rank Math, or All in One SEO. Shopify requires editing robots.txt.liquid directly in the theme code, and since it lacks a built-in per-page noindex setting, deindexing usually means adding a conditional noindex snippet to the theme alongside the robots.txt change.
If you're already exporting the Page Indexing report to sort through statuses like this one, SEO Heatmap turns that same Search Console data into a visual map, so you can spot which URL patterns are stuck in "Indexed, though blocked by robots.txt" without digging through a spreadsheet row by row. Give it a try, it's free.