Robots.txt Tester
Check whether a URL is blocked or allowed for any crawler, and see exactly which rule decided it.
blocked
"GPTBot" is blocked from /admin/login by "Disallow: /".
1. Match user-agent
Matched the most specific group, "User-agent: GPTBot", for "GPTBot".
2. Evaluate path rules
1 rule(s) match "/admin/login": Disallow: /.
3. Apply precedence
Longest match wins; Allow beats Disallow on ties. Winner: "Disallow: /" (line 6).
4. Decision
Blocked by "Disallow: /".
How the URL tester decides allowed or blocked
The tester applies the same three steps a compliant crawler does: pick the one group that matches the crawler, find every Allow/Disallow rule that matches the URL path, then apply precedence. The rule trace above shows each step for your input.
The rules that decide every result
- One group per crawler: the most specific User-agent match wins. A named group does not inherit rules from User-agent: *.
- Longest match wins: the rule with the longest matching path takes precedence, regardless of line order.
- Ties go to Allow: when an Allow and a Disallow match with equal length, the URL is allowed.
- Paths are case-sensitive and include the query string; $ anchors the end of the URL.
- No matching rule means allowed.
Worked examples
Each result below is produced by this tester; paste any of them above to see the full trace.
A longer Allow carves an exception out of a Disallow
User-agent: *
Disallow: /admin/
Allow: /admin/public//admin/public/list for GooglebotAllowed
Decided by Allow: /admin/public/. Both rules match; /admin/public/ is the longer path, so it wins.
A crawler-specific group replaces the * group entirely
User-agent: *
Disallow: /private/
User-agent: Googlebot
Disallow: /tmp//private/report for GooglebotAllowed
No rule matches. Googlebot obeys only its own group, which says nothing about /private/. Repeat shared rules in every named group.
Blocking GPTBot doesn't block other AI crawlers
User-agent: GPTBot
Disallow: /
User-agent: *
Allow: //blog/post for ClaudeBotAllowed
Decided by Allow: /. Each AI crawler needs its own User-agent line; ClaudeBot falls back to *.
$ stops matching when a query string follows
User-agent: *
Disallow: /*.pdf$/files/guide.pdf?v=2 for GooglebotAllowed
No rule matches. The URL ends with ?v=2, not .pdf, so the anchored pattern doesn't match. Use Disallow: /*.pdf to cover both.
Paths are case-sensitive
User-agent: *
Disallow: /Admin//admin/settings for BingbotAllowed
No rule matches. /Admin/ and /admin/ are different paths. Match the case your URLs actually use.
How do I test if a URL is blocked by robots.txt?
Paste or fetch the robots.txt, enter the URL or path, and pick a crawler. The tester shows allowed or blocked, the deciding rule, and the reasoning step by step.
Why is my page blocked when the file looks fine?
Usually group selection or precedence: the crawler matched a different group than you expected, or a broader wildcard rule matched. The trace shows which group and rule applied.
If a URL is allowed, will Google index it?
Not necessarily. Allowed means a compliant crawler may fetch it. Whether it is crawled, indexed, or ranked depends on the search engine.
Next steps
- ValidatorCatch syntax errors before testing individual URLs.
- How robots.txt worksGroup selection, precedence, caching, and status codes.
- AI Crawler DirectoryWhich AI user-agents to test.
Robots.txt Generator
Build a valid robots.txt from presets and crawler toggles — no syntax required.
OpenRobots.txt Validator
Catch syntax errors and best-practice issues, with a health score.
OpenRobots.txt Analyzer
Fetch and audit any site's live robots.txt in one report.
Open