Free tool, nothing leaves your browser
Robots txt checker that shows which rule won and why
Paste a robots.txt, pick a crawler, and test any path against it. Most checkers answer allowed or blocked and stop there. This one names the rule that decided it, prints the priority arithmetic behind the decision, and tells you when a rule you wrote is one Google ignores.
The matcher follows RFC 9309 and the behaviour in Google's own open source parser, where the docs' wording is easy to read the wrong way. It passes all six of the precedence examples Google publishes, including the tie case most tools get wrong. The conformance suite is on this page.
- 39conformance tests passing, including Google's six documented examples
- 20,703real rules parsed from 83 major sites to test this parser
- 39of 83 sites now name an AI crawler by user agent
- 15still use crawl delay, which Google ignores entirely
01Test a path against a robots file
Paste the robots.txt, name the crawler, and give the path you want to test. The path is everything after the host, starting with a slash, and the query string counts. Nothing is uploaded. The parser runs in your browser, and nothing you paste or type ever leaves it. The page's own traffic is a first-party count sent once when it opens and once if you click a checkout link, and neither request carries anything you entered.
Type a domain and the file is fetched over https and loaded below. Or skip this and paste a file yourself.
Parsing happens in your browser. The one thing a browser cannot do is read another site's file, so the fetch button calls a small relay endpoint the author of this site runs on workers.dev. It requests exactly one path, /robots.txt, over https, follows at most five redirects and refuses private address space.
Nothing you type is stored, and the paste box works with no fetch at all.
02The rule that decides is the longest pattern, not the first line
Two things about precedence surprise people, and both change the answer.
The first is that order does not matter. RFC 9309 says the most specific match must be used, and the most specific match is the one with the most octets. A disallow on line two does not beat an allow on line ten. The longer pattern wins wherever it sits in the file.
The second is the tie. When an allow and a disallow score the same, the allow wins. Google's parser only treats a path as blocked when the disallow priority is strictly greater than the allow priority, so equal scores fall through to allowed.
the arithmeticgoogle/robotstxt robots.cc
priority = length of the pattern string, wildcards included
blocked = disallowPriority > allowPriority # strict, ties go to allow
no pattern = priority 0, which counts as no rule at all
allow: /page disallow: /*.ph path /page.php5
5 octets 5 octets tie, so ALLOWED
That last example is Google's own, and it is where the docs' wording and the parser's arithmetic pull apart. The docs describe the winner as the rule that "matches more characters in the URL", which reads as counting characters against the URL, while the parser measures the pattern string itself, wildcards included. Measured that way, /page and /*.ph both score five and the tie goes to allow, which is also how Google's current spec resolves it, calling equal rules conflicting and applying the least restrictive one.
All six of Google's published examples resolve under the parser's reading, which is the reading the tool above uses. You do not need to check that yourself. Section 05 lists all six as test cases with their results.
03A group written for your crawler replaces the star group completely
This is the rule that catches people with real sites. If a robots.txt contains a group naming your crawler, that group is the only one that applies. The * group is not merged in, not inherited, and not used as a fallback for paths the specific group does not mention.
So a specific group holding a single unrelated rule silently switches off every restriction in the star group for that crawler. Google states it plainly, that user agent specific groups and global groups are not combined, and the parser backs it up by returning allowed without ever reading the global priorities once a specific group has matched.
It is not a theoretical problem. Re-fetching the census hosts on 2026-08-29 and testing each file's own rule patterns as the paths, googlebot's verdict differed from what the star group alone would say 167 times across 7 sites, among them nytimes.com, imdb.com, yelp.com, reuters.com and wsj.com. The re-test file is published beside this page. A checker without a user agent field cannot show you this, and most quick checkers skip that field.
| Host | Verdict differences |
|---|---|
| nytimes.com | 88 |
| yelp.com | 58 |
| indeed.com | 16 |
| wsj.com | 2 |
| imdb.com | 1 |
| jstor.org | 1 |
| reuters.com | 1 |
04What 83 major sites actually put in their robots file
To test the parser against real input rather than invented cases, 93 well known hosts were fetched on 2026-08-24. 83 returned a body, and those files hold 20,703 rules across 1,023 groups. One of the 83, linkedin.com, answered with an HTML page rather than a robots file, so its snapshot contributes zero rules. The raw result is published beside this page.
| Measure | Value |
|---|---|
| Sites returning a robots.txt body | 83 of 93 attempted |
| Allow and disallow rules parsed | 20,703 |
| User agent groups | 1,023 |
| Rules using the * wildcard | 4,218 |
| Rules using the $ end anchor | 9,017 |
| Sites declaring at least one sitemap | 62 of 83 |
| Sites still using crawl delay | 15 of 83, ignored by Google |
| Sites naming an AI crawler | 39 of 83 |
| Largest file | figma.com at 380,638 bytes |
| Files over Google's 500 KiB limit | 0 |
Two numbers in that table are worth stopping on. 15 of the 83 sites still set a crawl delay, a directive Google has never supported and ignores completely, so those lines do nothing for Googlebot. And 39 sites now name at least one AI crawler in a user agent line, which was a rare thing to see two years ago.
| Crawler token | User agent lines naming it |
|---|---|
| perplexity | 36 |
| ccbot | 30 |
| claudebot | 29 |
| gptbot | 29 |
| google-extended | 25 |
| omgili | 25 |
| meta-externalagent | 24 |
| bytespider | 23 |
| anthropic | 22 |
| amazonbot | 21 |
| applebot-extended | 21 |
| cohere | 19 |
Naming a crawler is not the same as blocking it. Some of these groups carry an allow rule rather than a disallow, and this count is a token match on the user agent line, nothing more. A site that lists two variants of one operator, PerplexityBot and Perplexity-User for instance, counts twice in this table, so a token's line count can run higher than the number of distinct sites naming it.
05The conformance suite this parser passes
A checker that cannot show its own test results is asking to be trusted rather than verified. These are the cases the matcher on this page is tested against, and all 39 pass. The six marked as Google's are the precedence examples published in Google's specification.
| Case | Source | Result |
|---|---|---|
| G1 /page | Google's | pass |
| G2 /folder/page allow=disallow /folder | Google's | pass |
| G3 /page.htm allow:/page vs disallow:/*.htm | Google's | pass |
| G4 /page.php5 allow:/page vs disallow:/*.ph | Google's | pass |
| G5 / allow:/$ vs disallow:/ | Google's | pass |
| G6 /page.htm allow:/$ vs disallow:/ | Google's | pass |
| /fish matches /fish | spec | pass |
| /fish matches /fish.html | spec | pass |
| /fish matches /fishheads | spec | pass |
| /fish not /Fish.asp | spec | pass |
| /fish not /catfish | spec | pass |
| /fish not /desert/fish | spec | pass |
| /fish/ matches /fish/salmon.htm | spec | pass |
| /fish/ not /fish | spec | pass |
| /fish/ not /animals/fish/ | spec | pass |
| /*.php$ matches /filename.php | spec | pass |
| /*.php$ not /filename.php?x=1 | spec | pass |
| /*.php$ not /filename.php/ | spec | pass |
| /*.php$ not /filename.php5 | spec | pass |
| /*.php matches /folder/any.php.file.html | spec | pass |
| /*.php not /windows.PHP (case) | spec | pass |
| /fish*.php matches /fishheads/catfish.php?x | spec | pass |
| /fish*.php not /Fish.PHP | spec | pass |
| specific group wins (googlebot /c allowed) | spec | pass |
| specific group blocks its own rule | spec | pass |
| unknown bot falls back to * | spec | pass |
| googlebot-news uses its own group | spec | pass |
| googlebot-news NOT blocked by * rule | spec | pass |
| sitemap does not terminate group, a blocked | spec | pass |
| sitemap does not terminate group, b blocked | spec | pass |
| empty disallow allows all | spec | pass |
| rule before user-agent discarded | spec | pass |
| no groups at all allows | spec | pass |
| trailing rule-less group allows | spec | pass |
| DISALOW typo honoured | spec | pass |
| missing colon tolerated | spec | pass |
| /*.php$ matches /a.php.php (repeated tail) | robots.cc | pass |
| /*.git$ matches /foo.git/bar.git | robots.cc | pass |
| /*$ matches every path (/x) | robots.cc | pass |
06Lines Google reads and lines Google throws away
Google's parser recognises exactly four fields. Everything else is discarded silently, which is why a robots.txt can look carefully written and still do nothing.
| Field | Detail | |
|---|---|---|
user-agent | read | Selects the group. Matching is case insensitive. |
allow | read | Path rule. The value is case sensitive. |
disallow | read | Path rule. The value is case sensitive. |
sitemap | read | Not tied to any group and must be a fully qualified URL. |
crawl-delay | ignored | Never supported by Google. Return 429, 500 or 503 to slow it down. |
noindex | ignored | Stopped working on 1 September 2019. Use a noindex meta tag on the page. |
nofollow | ignored | Not a robots.txt directive. Use a link or meta level attribute. |
host | ignored | Not part of the protocol Google implements. |
Two of those deserve a plain statement. crawl-delay has never been supported by Google, and the way to slow Googlebot down is to return a 429, 500 or 503, or to use the rate limit form in Search Console.
noindex in robots.txt stopped working on 1 September 2019, and a page you want out of the index needs a noindex meta tag on the page itself, which means the page must stay crawlable for Google to ever see it.
Read before trusting any verdict above
07What this checker cannot tell you
The tool answers one narrow question, whether a given crawler may fetch a given path under the rules you pasted. It does not answer any of these.
- LIMITAllowed does not mean indexed, and blocked does not mean absent from search. Google can index a URL it never crawled if other pages link to it, and will show it without a snippet.
- LIMITThis tests the rules you paste. It cannot fetch your live file, so a stale paste gives a stale answer. Google also caches robots.txt for around 24 hours, so a file you fixed a minute ago is not the file being enforced yet.
- LIMITRules apply only to the exact host, protocol and port serving the file. A robots.txt on https example.com does not govern the http version, a subdomain, or a non standard port.
- LIMITThe matcher follows Google's semantics. Bing, Yandex and other crawlers differ, and some honour crawl delay that Google discards. A verdict here is a verdict about Googlebot.
- LIMITRule patterns are normalized the way Google normalizes them, uppercase hex escapes and percent-encoded non ASCII, before matching. The path is compared as typed, so paste it in the encoded form the crawler would request.
- LIMITrobots.txt is not access control. Listing a path publishes that the path exists, and a crawler that ignores the file is unaffected by anything here.
- LIMITNo ranking, indexation, traffic, or revenue outcome is promised by this site or by the product it sells. Getting a robots.txt right removes an obstacle. It does not produce a result.
- LIMITNo end to end run from intake through indexation has been completed by anyone, including the seller, and there are currently no customers, so there are no reviews and no case studies.
- LIMITThe sixty day refund covers whether the software is what this site describes and whether it runs, and never whether a search engine chose to index or rank anything built with it.
08Where these rules come from
By Michael Lip, who fetched and published the census on this page and wrote the conformance suite the parser passes.
Every behaviour in the matcher traces to one of four primary sources, and the census file is published so the figures above can be recomputed rather than believed.
- SPECRFC 9309, the Robots Exclusion Protocol, for the most specific match rule, the tie behaviour, group selection and the 500 KiB parsing floor.
- SPECGoogle's robots.txt specification, for the four supported fields, the wildcard table, the six precedence examples and the HTTP status handling.
- CODEgoogle/robotstxt, the production matcher, for the detail the prose gets wrong, that priority is the length of the pattern string and that ties fall through to allow.
- DATAThe census file, every figure in section 04, fetched 2026-08-24 and published unmodified.
This page was built by the pipeline it sells
The tool and the census on this page are what the pipeline produces. It refuses a keyword already saturated by an AI Overview, it will not let a page state a number that code did not compute, and it blocks a page that only restates what already ranks. It runs on your machine, there is no hosted service and no account, and you pay once.
Sixty day refund. Nothing about traffic, rankings or indexation is promised here or anywhere else on this site.