Robots.txt Tester
Paste a robots.txt, give it a path and a crawler name, and see whether that crawler is allowed there and which line decided it. The file is the one you paste: this tool never fetches anything.
A full URL works too: the host is stripped, the query is kept, the fragment is dropped.
Disallowed
"Disallow: /private/" (line 10) is the longest matching rule in the "Googlebot" group, at 9 characters.
What decided it
- Path tested
- /private/quarterly-report
- Group applied
- User-agent: Googlebot (line 9)
- Deciding rule
- Disallow: /private/ (line 10)
- Crawl-delay
- Not set for this group
- Sitemaps
- https://example.com/sitemap.xml
Every rule that matched, most specific first
| Line | Rule | Characters |
|---|---|---|
| 10 | Disallow: /private/ | 9 |
What robots.txt tells you
robots.txt lists the parts of a site its owner asks crawlers not to visit. Checking it costs one request at the start of a run and keeps your traffic out of the areas most likely to be defended. This tool reads a pasted copy and tells you which rule applies to a given path and crawler. If a path you need is disallowed, ask the site, use its API, or leave it.
How a crawler picks its rules
This tester follows RFC 9309. A crawler obeys one group, not all the groups that mention it: the group whose product token is the longest match for its own name, falling back to User-agent: * only when no named group matches. That is why a file with a Googlebot block and a * block does not apply both to Googlebot, and why a rule added to the wildcard group can stop applying to the one crawler it was meant for. Groups that repeat the same token further down the file are treated as one group.
Allow, Disallow and who wins
Within the chosen group, the most specific rule wins, and in this tester specificity means the number of characters in the path pattern. So Allow: /admin/public/ beats Disallow: /admin/ for a page inside the public folder, while a longer disallow underneath it beats them both. When an Allow and a Disallow match with exactly the same length, the standard resolves the tie in favor of Allow. Two characters do extra work: * stands for any run of characters, and a trailing $ anchors the pattern to the end of the path, which is the difference between Allow: /$ (the home page only) and Allow: / (the entire site). Both count toward the character total, which is how Disallow: /*.htm outranks Allow: /page.
What this tester does not do
- Nothing is fetched. The file is whatever you paste, so it will not tell you that the live robots.txt differs from this one.
- Paths are compared exactly as written. Two spellings of the same path (one percent-encoded, one not) are treated as different paths, which is also how Google's parser behaves.
- A user-agent is matched on its product token, such as Googlebot, not on a full User-Agent header.
- Non-standard directives such as Host, Clean-param and Noindex are listed but never applied; no major crawler treats Noindex in robots.txt as binding.
- HTTP status handling is out of scope: a 5xx or an unreachable robots.txt makes real crawlers behave as if everything were disallowed, and nothing you paste can show that.
robots.txt is not an access control
A disallowed path is still served to anyone who asks for it, and the file itself is a public list of the directories a site considers sensitive. Treat it as a request from the site rather than a lock, and put real authentication in front of anything that needs protecting. On the crawling side, respecting the file does not replace pacing: a crawl that stays inside the allowed paths but sends requests too quickly can still be rate limited. If you are sizing that pace, the proxy calculator turns a request volume and a deadline into a rate you can defend, and our scraping practice guide covers pacing and the rest.
More free tools
Request one URL from a datacenter IP and residential IPs at once, and see which of them gets blocked.
What your HTTP client gives away: header order, missing client hints, and contradictions with your user-agent.
Five questions and a straight answer, including when the answer is that you do not need proxies at all.
Your public IP address, the country it resolves to, reverse DNS and the headers your browser sends.
Derive how many proxies a job needs from volume, deadline, per-IP rate limit, concurrency and retries.
Paste a curl command and read it back as Python, Node.js, Go or PHP, with the flags translated properly.
Turn a proxy host, port and credentials into working curl, Python, Node.js and Scrapy snippets.
Network address, broadcast, usable range and host counts for any CIDR prefix length.
Decode any user-agent string into browser, engine, OS and device, including bots and HTTP libraries.
Need proxies behind your code?
Node4 sells datacenter, rotating and residential proxies over HTTP(S), with SOCKS5 on paid plans. Datacenter and rotating exits are in the US, Italy and Spain; residential exits cover 170+ countries. Start with free proxies, no card required.