// LEARN / CRAWL

Fix blocked by robots.txt in GSC

Google can report **blocked by robots txt** even when the page is live, indexable, and getting impressions. The audit is simple: confirm the directive, confirm the fetch path, then confirm whether the block is intentional or a deploy mistake.

Infographic showing Google crawl budget by HTTP status, with bar and pie charts

What the error means

On large sites, robots.txt is usually not the bottleneck. In the enzymes.bio audit, Google reported 16,100 indexed pages and 591,000 not indexed while the site still had 7,950 organic clicks/mo in May 2026, up from 2,770 in May 2025.

That matters because blocked by robots txt is often a crawl signal, not an indexing verdict. Google may already know the URL from links, sitemaps, or prior crawls, but it cannot fetch the content if the path is disallowed.

Start in Performance › Search results for the URL pattern, then cross-check Indexing › Pages. If the blocked URL is important, you need to know whether the block is intentional, temporary, or caused by a rewrite, prefix match, or environment rule.

Check the exact directive

`Disallow` prefix matching

A line like Disallow: /private/ blocks every URL that starts with that path. A missing trailing slash can change the match set. Compare /blog and /blog/, because Google treats them as different prefixes.

`Allow` does not rescue everything

Allow: only helps when the matcher can resolve a more specific path. If the broader rule is too aggressive, the page still lands in gsc blocked by robots state.

Non-200 `robots.txt` responses

Google expects /robots.txt to return 200. A 404 usually means no rules, but a 5xx can make crawling unstable. 301 and 302 redirects add another layer of failure if the final target is malformed.

False positives from parameter paths

Some templates generate blocked URLs with tracking parameters, session IDs, or faceted filters. If the canonical page is fine, the robots.txt error may only affect duplicates, not the money page.

Hand-drawn SEO diagram explaining robots.txt blocks, crawl signals, and site audit workflow

Real block or false alarm

FieldReal blockFalse alarm

URL fetch in GSC

Blocked before HTML fetch

Page fetched elsewhere or indexed from other signals

robots.txt

Explicit Disallow hit

Rule applies to a different prefix or environment

HTTP status

Usually still 200 on the page URL

200, 301, or 302 may be fine; block is elsewhere

Logs

Googlebot requests stop or drop sharply

Googlebot still requests the page, but on alternate URLs

Fix

Edit robots.txt or move the path

Clean up the wrong URL version or parameter pattern

Audit the block fast

  1. 01

    Open the live `robots.txt`

    Request https://example.com/robots.txt in the browser and in curl. You want the exact file Google sees, not a cached copy. Confirm the response is 200, not a redirect chain to 301/302.

  2. 02

    Test the exact URL

    Check the blocked URL against the path rules. A page like /collections/widgets may be blocked by Disallow: /collections/, while /collections/widgets?sort=price may be a separate pattern. Use the tester, then validate the live URL.

  3. 03

    Map the crawl surface

    Use Settings › Crawl stats to see whether Google is spending crawl on blocked paths. If crawl spikes on junk URLs, you have a crawl budget problem, not just a single-page issue.

  4. 04

    Check server logs

    Look for Googlebot hits on the blocked URL, the 200/304/404 mix, and any 429 or 5xx responses. If a Cloudflare worker or edge rule rewrites robots.txt, the logs will show the wrong asset being served.

Fix platform-specific issues

In WordPress, the most common mistake is a plugin-generated robots.txt that blocks media folders, tag archives, or internal search URLs too broadly. See WordPress SEO and robots.txt best practices if the file is being shaped by theme code or a security plugin.

In Shopify, the platform file is limited, so most robots.txt blocked cases come from app rewrites, collection filters, or custom proxy logic. Check Shopify SEO when collection URLs, ?sort= parameters, or variant paths are being disallowed by mistake.

For large catalogs, pair Indexing › Pages with indexing troubleshooting. If the blocked URLs are low-value duplicates, the fix may be to leave them blocked and strengthen canonicals, internal links, and sitemaps instead.

Test with curl

curl -I https://example.com/robots.txt
curl -s https://example.com/robots.txt
curl -I https://example.com/blocked-page/
curl -I -A "Googlebot" https://example.com/blocked-page/

# Compare status codes: 200, 301, 302, 304, 404, 410, 429, 5xx

Use logs and crawl stats

The fastest way to tell whether the block is costing you crawl budget is to compare logs with GSC. In the enzymes.bio audit, the site had 557,000 impressions/mo and only 1.4% sitewide CTR, with an average position of 12.4. That is enough room for crawl and snippet fixes to matter, but only if Google can reach the pages.

Check Settings › Crawl stats for spikes in response codes and fetch volume. Then match that against server logs for paths that should not exist. If blocked URLs are soaking up bot requests, you may need to tighten Disallow rules, canonicalize aggressively, or return 410 for dead paths instead of keeping them alive with 200.

Inspect the response

{
  "request": "/robots.txt",
  "expected_status": 200,
  "checklist": [
    "No redirect loop",
    "No stale cached file",
    "Correct disallow paths",
    "No accidental staging host rules",
    "No worker rewrite to /404 or /maintenance"
  ],
  "common_statuses": [200, 301, 302, 304, 404, 410, 429, 500, 502, 503]
}

Verify the fix

After the edit, request the file again, then fetch the target URL with a normal browser user agent and Googlebot. You want the path to return 200 unless the page itself is intentionally gone.

If the page was blocked by mistake, the next signal should be a crawl in logs, followed by a status change in Indexing › Pages. For blocked sections that should stay blocked, update your sitemap so only indexable URLs are listed. That keeps Google from wasting crawls on paths it cannot use.

If the issue is still noisy, review Enhancements › Breadcrumbs, Enhancements › Product snippets, and Enhancements › FAQ for template errors that point Google at the wrong URL variant.

FAQ

Does a blocked URL mean it is deindexed?

No. A URL can be blocked from crawling and still appear in search if Google already knows it from links or past crawls. The key question is whether the block is preventing fresh fetches.

Should I unblock everything in robots.txt?

No. Keep low-value filters, internal search, and duplicate paths blocked if they create crawl waste. The fix is to unblock only pages that need Googlebot access.

Why does GSC say blocked even after I changed the file?

Google may still have a cached view of the old file. Confirm the live 200 response, then wait for recrawl. If logs still show the old rules, an edge cache or worker is overriding origin.

What if the URL returns 404 or 410?

That is a different problem. robots.txt blocking is about crawl access, while 404 and 410 are response codes on the URL itself. A dead URL should usually be removed from sitemaps and internal links.

How do I know if crawl budget is the issue?

If Settings › Crawl stats shows heavy bot activity on junk URLs while important pages lag in discovery, you have crawl budget pressure. Block or consolidate the waste before you ask Google to re-crawl deeper pages.

// FAQ

Common questions

Does a blocked URL mean it is deindexed?
No. A URL can be blocked from crawling and still appear in search if Google already knows it from links or past crawls.
Should I unblock everything in robots.txt?
No. Keep low-value filters, internal search, and duplicate paths blocked if they create crawl waste.
Why does GSC say blocked after I changed the file?
Google may still have a cached view of the old file. Confirm the live 200 response and watch logs for recrawl.
What if the URL returns 404 or 410?
That is a separate problem. robots.txt blocking is about crawl access; 404 and 410 are response codes on the URL itself.
How do I know if crawl budget is the issue?
If crawl stats show heavy bot activity on junk URLs while important pages lag, you have crawl budget pressure.
// FREE-AUDIT

Get a free 30-minute technical SEO audit

Send your URL and one symptom. You'll get a Loom walkthrough back within 48 hours — no sales call.

Request a free audit
In plain English: If Google can’t fetch the page, fix the exact rule, confirm the live `200`, and stop wasting crawl on URLs that should never rank.