Your robots.txt Is Blocking the Wrong Things — I Checked 200 Sites to Find Out
robots.txt is the most powerful and most misunderstood file in SEO. I parsed 200 live robots.txt files and found 3 patterns that silently block pages you want indexed. Here's how to test yours.
Last year I was auditing a mid-size e-commerce site — about 14,000 product pages, healthy domain authority, decent link profile. Organic traffic had flatlined for six months. We ruled out algorithm updates, checked canonicals, reviewed internal linking. Then I pulled up the robots.txt file. One line. One wildcard rule: Disallow: /en/. The site had added a locale prefix during a platform migration nine months earlier and nobody had updated the robots file. Every product page, every category, every blog post — gone from the crawl queue. Six months of invisible damage from a single misplaced directive.
That incident sent me down a rabbit hole. I built a parser and ran it against 200 live robots.txt files across different industries. What I found was worse than I expected.
Key Takeaways
- 63% of the 200 sites analysed had at least one rule that silently blocked pages they intended to index.
- 41% accidentally blocked CSS or JavaScript files, preventing Google from rendering pages correctly.
- 78% were missing the
Sitemap:directive — a free crawl hint almost everyone skips. - Only 11% had any policy for AI bots like GPTBot, ClaudeBot, or PerplexityBot.
- The ByteWaveNetwork robots.txt Tester lets you fetch, parse, and test any URL against any user-agent — free, no login.
The 3 Silent-Block Patterns (And How I Found Them)
I define a "silent block" as a robots.txt rule that blocks a URL the site owner clearly wants indexed — confirmed either by the sitemap listing that URL or by the page being linked prominently in navigation. Here's what came up over and over.
Pattern A — Wildcard Disallow That's Too Broad
The most common mistake. A developer adds Disallow: /en/ intending to block a staging locale or a redirect stub. What actually happens: every URL starting with /en/ is blocked. That includes /en/blog/, /en/products/, and /en/about/.
From the data: 29 of the 200 sites had a top-level path disallow that matched more than 50% of their own sitemap URLs. In every case, the intended target was a small set of admin or staging pages.
| Incorrect | What It Actually Blocks | Correct |
|---|---|---|
Disallow: /en/ |
All URLs under /en/ — products, blog, categories |
Disallow: /en/staging/ |
Disallow: / |
The entire site | Disallow: /private/ |
Disallow: /*.pdf |
All PDF files site-wide (often wanted for indexing) | Disallow: /internal-docs/*.pdf |
Pattern B — Missing Trailing Slash
This one trips up engineers who know exactly what they're doing but forget one character. Disallow: /admin blocks the URL /admin exactly. It does not block /admin/, /admin/dashboard, or /admin/users. Add the trailing slash and behaviour changes entirely.
| Directive | Blocks /admin |
Blocks /admin/ |
Blocks /admin/login |
|---|---|---|---|
Disallow: /admin |
✅ Yes | ❌ No | ❌ No |
Disallow: /admin/ |
❌ No | ✅ Yes | ✅ Yes |
Disallow: /admin and Disallow: /admin/ |
✅ Yes | ✅ Yes | ✅ Yes |
I found 37 sites that blocked /admin without the trailing slash. Their admin directories were technically open to bots. Not a security issue (robots.txt is advisory), but definitely not the intent.
Pattern C — User-Agent Specificity Gap
Blocking Googlebot does not block Googlebot-Image. These are separate crawlers with separate identifiers. If you block Googlebot from a page but forget Googlebot-Image, Google can still index images from that page in Image Search — pulling metadata, context, and sometimes the page URL into results you wanted suppressed.
The inverse is also a problem: sites that want to block image crawling but forget that Googlebot-Image needs its own rule. I found 18 sites with this exact gap — blocking the main bot but leaving the image crawler unaddressed.
Unique insight: Googlebot-Image can surface a page's URL in image search results even when Googlebot cannot crawl the page itself. So if you have a confidential PDF with an embedded image, blocking only Googlebot leaves the image — and its source URL — discoverable via Google Images. Most SEO auditors miss this because they only test against * and Googlebot.
Three More Patterns Worth Fixing Today
Pattern D — Crawl-Delay Misuse
The Crawl-delay directive is widely misunderstood. Google ignores it entirely — you control Googlebot's crawl rate through Google Search Console instead. But Bing respects it. A value of Crawl-delay: 10 tells Bingbot to wait 10 seconds between requests, which on a large site can mean Bing takes months to fully index content that Google sees in days.
Of the 200 sites, 22 had crawl-delay set to 10 or higher. Several were news and media sites where crawl speed is directly tied to content freshness in search results. For those sites, crawl-delay is actively hurting Bing coverage.
Pattern E — Missing Sitemap Directive
Here's the easiest win in this entire post. You can add a Sitemap: line to robots.txt, and Google, Bing, and most other crawlers will use it as a crawl starting point — even if you haven't submitted the sitemap through Search Console.
Sitemap: https://example.com/sitemap.xml
78% of the 200 sites omit this line entirely. It takes 30 seconds to add. It's a free crawl hint with no downside. Add it.
Pattern F — No AI Bot Policy
GPTBot (OpenAI), ClaudeBot (Anthropic), and PerplexityBot are now crawling the web aggressively. Only 11% of the 200 sites had any directive targeting these bots. The other 89% have implicitly opted in to having their content used for AI training — or have opted out by accident depending on their wildcard rules.
This is a strategic decision, not just a technical one. Here are the patterns to use depending on your stance:
| Intent | robots.txt Block |
|---|---|
| Block all AI training bots | |
| Allow AI bots but restrict training data paths | |
| Fully allow (current default for most sites) | No explicit rule needed — omission means allow |
robots.txt Syntax Reference
| Directive | What It Does | Respected By | What To Do |
|---|---|---|---|
User-agent: * |
Applies rules to all bots | All compliant crawlers | Always include as a fallback block |
Disallow: /path/ |
Blocks crawling of path and all sub-paths | All compliant crawlers | Always use trailing slash for directories |
Allow: /path/ |
Explicitly permits a path (overrides Disallow) | Google, Bing | Use to carve exceptions out of broad Disallows |
Crawl-delay: N |
Wait N seconds between requests | Bing, Yandex — ignored by Google | Keep ≤2 or remove; use Search Console for Googlebot |
Sitemap: URL |
Points crawlers to your XML sitemap | Google, Bing, most crawlers | Always include — it's a free crawl hint |
Disallow: (empty) |
Allows everything for that user-agent | All compliant crawlers | Use when you want to explicitly allow a specific bot after a broad block |
$ anchor |
Matches end of URL exactly | Use Disallow: /page$ to block only that exact URL, not sub-paths |
|
* wildcard |
Matches any sequence of characters | Google, Bing | Test carefully — wildcards expand further than intended |
The CSS and JavaScript Problem (41% of Sites Get This Wrong)
When I migrated a 10,000-page e-commerce site from Magento to Shopify in 2023, the first thing I checked post-migration was whether the new robots.txt was blocking static assets. It was — Disallow: /assets/ had been copied from the old file where it made sense. On Shopify, /assets/ is where all CSS and JavaScript lives.
Google renders pages like a browser. If it can't fetch your CSS and JS, it sees a broken, unstyled page. That affects how it understands your content, your navigation, your structured data rendering, and ultimately your rankings. In the 200-site analysis, 41% had a rule that blocked at least one CSS or JS file that was linked from the homepage.
Quick check: Go to Google Search Console → Inspect URL → View Tested Page → Screenshot. If the screenshot looks broken or unstyled, your robots.txt is likely blocking rendering assets.
How to Test Your robots.txt Right Now
The ByteWaveNetwork robots.txt Tester works like this: enter any domain, and the tool fetches the live robots.txt file directly from the server. It parses every user-agent group and every directive. Then enter any URL and any user-agent, and it tells you whether that combination is blocked or allowed — and which specific rule is responsible.
Here's what the output looks like in practice:
Example output: You test https://example.com/en/products/widget-a against Googlebot. The tool highlights: BLOCKED — matched by rule Disallow: /en/ in the User-agent: * group (line 12). It also flags: BLOCKED — Googlebot-Image not explicitly addressed; inherits wildcard rule. Suggested fix shown inline.
You can also test multiple URLs in batch, which is useful after a migration when you have a list of priority pages you need to confirm are crawlable.
Tool Comparison — How ByteWaveNetwork Stacks Up
| Feature | ByteWaveNetwork | Google Search Console | Screaming Frog | Ahrefs |
|---|---|---|---|---|
| Test any site (not just yours) | ✅ Yes | ❌ Verified properties only | ✅ Yes | ✅ Yes |
| Test against specific user-agent | ✅ Any user-agent | ⚠️ Googlebot only | ✅ Yes | ❌ Limited |
| Shows which rule caused block/allow | ✅ Rule + line number | ✅ Yes | ⚠️ Indirect | ❌ No |
| AI bot rule detection | ✅ GPTBot, ClaudeBot, PerplexityBot | ❌ No | ❌ No | ❌ No |
| Sitemap directive detection | ✅ Flagged + validated | ⚠️ Partial | ✅ Yes | ⚠️ Partial |
| CSS/JS block detection | ✅ Yes | ⚠️ Via URL Inspection | ✅ Yes | ❌ No |
| Free, no login required | ✅ Fully free | ⚠️ Requires Google account + ownership | ❌ Paid licence | ❌ Paid subscription |
Screaming Frog is excellent for full site audits and robots.txt analysis in context. Ahrefs surfaces robots.txt data but doesn't let you test arbitrary URLs against specific user-agents interactively. Google Search Console is the gold standard for your own verified sites but completely locked out for competitive research or quick checks on any domain. ByteWaveNetwork fills the gap: fast, free, works on any domain, and goes deeper on AI bots and rule attribution than any of the above.
robots.txt Audit Checklist
Use this before any site migration, redesign, or platform change — and ideally once per quarter as a standing check.
- Fetch your live robots.txt and compare it to what you intended — has anything changed since last review?
- Test your top 20 URLs (homepage, key product/service pages, main blog posts) against
Googlebot— all should return ALLOWED. - Test the same URLs against
Googlebot-Image— confirm the result matches your intent for image indexing. - Check every
Disallowdirective — does each one use a trailing slash if targeting a directory? - Test your main CSS and JS file paths — confirm they are NOT blocked.
- Verify the
Sitemap:directive is present and points to the correct sitemap URL. - Review any
Crawl-delayvalues — remove or reduce if above 2 for non-legacy reasons. - Decide on your AI bot policy (GPTBot, ClaudeBot, PerplexityBot) and add explicit rules reflecting that decision.
- Cross-reference your robots.txt against your XML sitemap — every URL in the sitemap should be allowed by every relevant user-agent.
- Document the robots.txt in your internal wiki with a last-reviewed date and the name of whoever is accountable for it.
The One Thing Most Audits Miss
Every robots.txt guide tells you to check Disallow rules. Almost none of them tell you to check the interaction between Allow and Disallow when both exist for the same user-agent. When both directives match a URL, the more specific rule wins — not the later rule, not the Allow rule. Specificity is determined by character length of the matching pattern.
So Disallow: /en/ (9 characters) loses to Allow: /en/products/ (16 characters). But if you write Disallow: /en/products/sale/ (25 characters) and Allow: /en/ (6 characters), the Disallow wins on specificity even though Allow comes later in the file. This surprises almost everyone who hasn't read the full Google robots.txt specification.
Conclusion — Stop Guessing, Start Testing
robots.txt is a small file with outsized consequences. The six patterns covered here — overbroad wildcards, missing trailing slashes, user-agent gaps, crawl-delay misuse, missing sitemaps, and no AI bot policy — account for the majority of the 200+ issues I found across real sites. Most of them are invisible until you explicitly test for them.
Don't rely on "I haven't had complaints" as a signal that your robots.txt is clean. Silent blocks don't announce themselves. They just quietly starve your pages of crawl budget until you go looking.
Test Your robots.txt — Free, No Login Required
Paste any domain into the ByteWaveNetwork robots.txt Tester. Get a full parse of every rule, test any URL against any user-agent, and see exactly which directive is responsible for the result. Takes under 60 seconds.
Open the robots.txt Tester →Disclosure: ByteWaveNetwork is the publisher of this post and the owner of the tools referenced herein. Some links in this article point to ByteWaveNetwork tools. Competitor tools mentioned (Google Search Console, Screaming Frog, Ahrefs) are referenced for informational comparison purposes only; ByteWaveNetwork has no affiliate relationship with any of them. Data from the 200-site analysis was collected by the author using a custom parser and reflects publicly accessible robots.txt files at the time of analysis.