Skip to content
17×7

Robots.txt Tester

Paste a robots.txt file, enter a URL and a crawler name, and see whether that crawler may fetch the page — with the group it uses, the rule that decides and its line number. Ten common search and AI crawlers are checked at the same time.

  • Runs in your browser
  • Nothing fetched or uploaded
  • RFC 9309 matching
  • 10 search & AI crawlers
robots.txt
Paste the whole file. It stays in this tab and is never added to the page address.
What to test
A full URL, or a path with its query such as /search?q=boots
The name on User-agent lines: Googlebot, Bingbot, GPTBot…

Results

Showing the example values — change any input to recalculate.

Allowedfor Googlebot · Allow: /search/about (line 12)
Path tested
/search/about-us
Group used
googlebot
Deciding rule
Allow, line 12
Matching rules
2
Rules in group
4
Groups merged
2
Sitemap lines
1

Common crawlers on this path

CrawlerGroup usedResult
Googlebot
Google · Google Search crawling
googlebotAllowed
Allow: /search/about · line 12
Bingbot
Microsoft · Bing search crawling
bingbotAllowed
Allow: /search/about · line 12
GPTBot
OpenAI · Content for model training
gptbotBlocked
Disallow: / · line 18
ChatGPT-User
OpenAI · Pages a ChatGPT user asks for
* (catch-all)Allowed
No rule matched
ClaudeBot
Anthropic · Content for model training
claudebotBlocked
Disallow: / · line 18
Google-Extended
Google · Token only: Gemini training and grounding
google-extendedBlocked
Disallow: /search/ · line 21
PerplexityBot
Perplexity · Perplexity search index
* (catch-all)Allowed
No rule matched
CCBot
Common Crawl · Open web archive, widely used for AI training
ccbotBlocked
Disallow: / · line 18
Applebot-Extended
Apple · Token only: Apple AI training
* (catch-all)Allowed
No rule matched
Bytespider
ByteDance · ByteDance crawler
* (catch-all)Allowed
No rule matched
Effective group for Googlebot
# Group used for Googlebot: exact match, 2 groups merged
User-agent: Googlebot  # lines 9 and 23
Disallow: /search      # line 11
Allow: /search/about   # line 12
Disallow: /*.pdf$      # line 13
Disallow: /drafts/     # line 24
Show the math (6 steps)
  1. Groups in the file = 55 user-agent groups, 10 allow/disallow rules, 1 sitemap line in 27 lines
  2. Group for Googlebot = User-agent: googlebotuser-agent "googlebot" on lines 9 and 23 (case-insensitive) — 2 groups merged into one
  3. Path to match = /search/about-us/search/about-us → /search/about-us (no encoding changes)
  4. Line 12 · Allow: /search/about = 13matches /search/about-us — pattern /search/about is 13 octets long
  5. Line 11 · Disallow: /search = 7matches /search/about-us — pattern /search is 7 octets long
  6. Decision = Allowedlongest match: 13 octets beats Disallow: /search (line 11, 7)
  • Rules in the * group do not apply to Googlebot: a crawler that finds its own group ignores the catch-all group completely.
  • 1 Sitemap line found (line 26). Sitemap lines apply to the whole file, not to a group, and do not affect what is allowed.

Quick answer

Under RFC 9309 the longest matching rule wins, and Allow wins a tie. With Disallow: /shop/ and Allow: /shop/catalog/, /shop/catalog/item-1 is allowed and /shop/cart is blocked. A crawler uses only the group that names it, falling back to User-agent: * when none does.

About the Robots.txt Tester

This tester answers one question: may a given crawler fetch a given URL under a given robots.txt file? Paste the file, type a URL or path and a crawler name, and it shows the verdict, the group of rules that crawler would follow, the exact line that decided the outcome, and every other rule that matched along the way. It follows RFC 9309, the Robots Exclusion Protocol the IETF published in September 2022, which turned almost thirty years of informal practice into a written standard.

Nothing is fetched. The file you paste stays in this browser tab, so you can test a draft before it goes live, check a staging site that is not public, or reproduce a crawler complaint without touching the production file. The same URL is also checked against ten common search and AI crawlers at once, so one table shows which of them your rules actually reach.

How to use it

Paste the full contents of a robots.txt file into the large box — from the live site's /robots.txt, from your repository, or from the CMS setting that generates it. The tester reads it exactly as written, including comments and blank lines, and every line number in the results refers to the text in the box.

Enter the URL you want to check. A full address such as https://shop.example/search?q=boots works, and so does a bare path with its query string, like /search?q=boots. The scheme, host and anything after # are dropped, because robots.txt rules only ever see the path and query. A link that starts with two slashes, such as //shop.example/checkout/cart, is read the way a browser reads it: shop.example is the host, and the path tested is /checkout/cart.

Type the crawler's product token: the short name used on User-agent lines, such as Googlebot or GPTBot — not the long User-Agent header the bot sends. Capitalization does not matter. Leave Exact token match only unticked to let a Google sub-crawler like Googlebot-Image fall back to a Googlebot group, the way Google describes its own crawlers; tick it to see what a crawler that accepts only its exact name would do. The tester applies no fallback to other names, so here Applebot-Extended is not covered by an Applebot group and uses the * group instead.

Results update as you type. The verdict at the top names the deciding rule and its line. The table repeats the check for ten widely seen crawlers, with your crawler highlighted when it is one of them. Effective group shows the merged rules your crawler obeys, ready to copy, and Show the math lists each matching rule with its length so you can see why the longest one won. The robots.txt text is never written into the page address, so a copied link carries only the URL and the crawler name.

Use cases

  • Checking an edit before you deploy it. Paste the changed file and try the URLs that matter — product pages, category pages, the home page — so a stray Disallow: / never takes a site out of search.
  • Explaining a "blocked by robots.txt" report. When a search console or a crawl tool flags a URL, find the line responsible and see whether a narrower Allow rule would fix it without opening the whole directory.
  • Deciding what AI crawlers may read. See which AI tokens your current file actually reaches, and whether a group written for one bot accidentally shields or exposes another.
  • Auditing tracking parameters and faceted navigation. Confirm that wildcard rules such as /*?sessionid= block the parameter combinations you meant, and only those.
  • Reviewing a pull request. Teams that keep robots.txt in version control can paste the proposed file and check a short list of critical URLs as part of code review.
  • Learning the rules. The step-by-step output shows how grouping, merging, wildcards and the longest-match rule interact, which is quicker than reading the RFC cold.

How robots.txt matching works, step by step

A crawler that respects robots.txt goes through the same sequence for every URL, and this tool performs it in the same order.

  1. Read the file line by line. Each line is a field name, a colon and a value. Field names are case-insensitive, so DISALLOW and disallow are the same field, and anything after # is a comment. Lines the protocol does not define are skipped; this tool lists them so typos stand out.
  2. Build groups. One or more User-agent lines in a row open a group, and the Allow and Disallow lines after them belong to it. The next User-agent line after a rule starts a new group. Blank lines, comments, Sitemap and Crawl-delay lines do not break a run of User-agent lines.
  3. Pick the crawler's group. The crawler compares its product token with each User-agent value, ignoring case. If several groups name it, their rules are merged into one. If none do, it uses the * group, and if there is no * group either, nothing is restricted. A crawler that finds its own group ignores the * group entirely — the two are never combined.
  4. Prepare the path. Only the path and query are compared, octet by octet and case-sensitively, starting from the first slash. Characters outside ASCII are percent-encoded as UTF-8, and needless escapes of letters, digits, hyphen, period, underscore and tilde are decoded, so /café and /caf%C3%A9 compare equal, as do /%62az and /baz.
  5. Collect every matching rule. A rule matches when the path begins with its pattern. An asterisk stands for any run of characters, slashes included, and a dollar sign at the very end requires the path to stop there.
  6. Let the longest rule win. Among the matching rules, the one whose pattern has the most octets decides. When an Allow and a Disallow are the same length, Allow wins. When nothing matches, the URL is allowed. The file /robots.txt itself is always allowed.

The order of rules within a group never changes the outcome — only a rule's length and the group it sits in do. That surprises people who learned the rules from the 1990s drafts, where the first matching line won.

Worked examples

The example loaded in the form is a small shop's robots.txt. These results come from the same code that runs in the form.

Longest match. For Googlebot and /search/about-us, two rules in Googlebot's group match: Disallow: /search on line 11 (7 octets) and Allow: /search/about on line 12 (13 octets). The longer Allow wins, so the page is allowed even though everything else under /search is blocked.

Merged groups. The file names Googlebot twice, on lines 9 and 23 — the second time in lower case. Both groups merge, so /drafts/fall-sale is blocked for Googlebot by line 24. Bingbot shares the first group but not the second, so for Bingbot the same URL is allowed.

The catch-all group. PerplexityBot has no group of its own, so it falls back to *. /checkout/cart is blocked by Disallow: /checkout/ on line 3, but /checkout/help/returns is allowed by the longer Allow: /checkout/help on line 4.

Wildcards and anchors. Under the same group, /menu.pdf is blocked by /*.pdf$ (line 6), yet /menu.pdf?v=2 is allowed: the $ requires the path to end right after .pdf, and the query string counts as part of the path. Likewise /*?sessionid= blocks /shop?sessionid=42 but not /shop?page=2&sessionid=42, where the parameter is not first; /*sessionid= would catch both.

Here is the full grid for the example file — five crawlers, eight URLs, with the line that decided each cell.

URLGooglebotBingbotGPTBotGoogle-ExtendedPerplexityBot
/search/about-usAllowed · line 12Allowed · line 12Blocked · line 18Blocked · line 21Allowed · no rule
/search?q=bootsBlocked · line 11Blocked · line 11Blocked · line 18Allowed · no ruleAllowed · no rule
/drafts/fall-saleBlocked · line 24Allowed · no ruleBlocked · line 18Allowed · no ruleAllowed · no rule
/checkout/help/returnsAllowed · no ruleAllowed · no ruleBlocked · line 18Allowed · no ruleAllowed · line 4
/menu.pdfBlocked · line 13Blocked · line 13Blocked · line 18Allowed · no ruleBlocked · line 6
/menu.pdf?v=2Allowed · no ruleAllowed · no ruleBlocked · line 18Allowed · no ruleAllowed · no rule
/shop?sessionid=42Allowed · no ruleAllowed · no ruleBlocked · line 18Allowed · no ruleBlocked · line 5
/shop?page=2&sessionid=42Allowed · no ruleAllowed · no ruleBlocked · line 18Allowed · no ruleAllowed · no rule

Wildcards, anchors and percent-encoding

Only two characters are special inside a pattern. The asterisk matches zero or more characters of any kind, so /*.pdf reaches PDFs in every folder. The dollar sign means "the URL ends here" only when it is the last character of the pattern; anywhere else it is an ordinary character. To match a literal asterisk or dollar sign in a URL, write it percent-encoded as %2A or %24.

Patterns should start with a slash or an asterisk. A rule such as Disallow: private/ can never match, because every path begins with /; the tester flags it. An empty Disallow: matches nothing and is the conventional way to say "everything is allowed", while Disallow: / blocks the whole site.

Escapes for reserved characters keep their meaning: %2F in a URL is not the same as /, and the tester compares them as written. Hex digits are compared in upper case, so %e3 and %E3 are equal. Matching is case-sensitive, so Disallow: /Private does not block /private; if your server answers both spellings, write a rule for each one that gets linked.

Why paste-and-test matters now

For close to ten years, the usual way to try a robots.txt edit was the tester built into Google Search Console. Google retired it in December 2023 and replaced it with a robots.txt report that lists the files Google has fetched for a property, when it last fetched them and any parsing problems. That report shows what Google sees on the live site, but it has no box for pasting a draft and trying URLs before you publish. The URL Inspection tool can still tell you whether one live URL is blocked.

The rules themselves are now settled. Google released its production robots.txt parser as open-source code in 2019, and the protocol was published as RFC 9309 in 2022. This tester implements the RFC text directly. Where Google documents extra behavior — such as letting Googlebot-Image fall back to a Googlebot group — the option is labeled so you can compare both readings.

AI crawler tokens: what blocking them does and does not do

Since 2023, many sites have edited robots.txt with AI crawlers in mind. Each company publishes the tokens it honors, and they do different jobs:

  • GPTBot (OpenAI) and ClaudeBot (Anthropic) collect public pages that may be used to train models. Disallowing them asks those companies not to crawl your pages for that purpose.
  • ChatGPT-User fetches a page when a person using ChatGPT asks for it. OpenAI says that because these visits are started by a user, robots.txt rules may not apply to them. OpenAI's separate OAI-SearchBot token governs appearance in ChatGPT search, and Anthropic likewise lists Claude-User and Claude-SearchBot alongside ClaudeBot.
  • Google-Extended is a control token, not a crawler: no request ever arrives under that name. Google crawls with its usual Googlebot agents, and Google-Extended decides whether that content may be used to train Gemini models and to ground their answers. Google says it has no effect on inclusion or ranking in Google Search; AI features inside Search follow Googlebot's rules.
  • Applebot-Extended works the same way for Apple: Applebot does the crawling, and the -Extended token only controls whether the content may train Apple's generative models.
  • CCBot builds Common Crawl, a free public archive of the web from which many AI training datasets are drawn. PerplexityBot indexes pages for Perplexity's answer engine, and Bytespider is ByteDance's crawler.

What blocking does not do: it does not delete anything already collected, because robots.txt only governs future fetches. It is a request, not access control — a crawler that ignores the file is not stopped by it, and since the file is public, listing secret paths in it advertises them. It also does not remove pages from search: a URL that Googlebot may not crawl can still be indexed from links, usually without a description. To keep a page out of search, allow crawling and add a noindex robots meta tag or X-Robots-Tag header; for anything private, require a login.

One trap catches many AI rules. A crawler that has its own group ignores the * group, so adding a GPTBot group that disallows only /private/ quietly lifts every other * rule for GPTBot. With Disallow: /checkout/ under * and Disallow: /private/ under GPTBot, this tester reports /checkout/cart as allowed for GPTBot. Copy the * rules into every named group that should keep them. And never add Googlebot to an AI group to opt out of training — that removes the site from Google Search; Google-Extended is the token for that choice.

Limits of this tester

  • It reads only what you paste. It does not fetch /robots.txt, so it cannot see redirects, HTTP status codes or outages. Under RFC 9309, a 4xx response for robots.txt lets crawlers fetch anything, while a 5xx error or an unreachable server means they must assume everything is disallowed.
  • Each combination of scheme, host and port has its own file. Rules in one host's robots.txt say nothing about a subdomain or about the same host over another protocol.
  • Reserved characters are compared as written: a literal : or / inside a query value does not equal %3A or %2F. Write rules the way the URLs appear in your links.
  • The Googlebot-Image to Googlebot fallback follows Google's description of its own crawlers, so it applies only to tokens that begin with Googlebot-. Every other token is matched by its exact name, then the * group. Tick Exact token match only for the strict reading of Googlebot tokens too.
  • Crawl-delay and Sitemap lines are reported, not applied. Misspelled fields such as Dissallow are flagged and ignored, although some crawlers accept them.
  • Files over 500 KiB are cut at 500 KiB, the minimum RFC 9309 requires crawlers to read and the same limit Google documents.
  • Robots.txt is voluntary, and crawlers may interpret edge cases differently. A result here tells you what a crawler that follows RFC 9309 would do.

Sources

Frequently asked questions

Does the order of rules in robots.txt matter?

Not within a group. Under RFC 9309 the matching rule with the longest pattern wins wherever it appears, and an Allow beats a Disallow of the same length. Order only matters for grouping: a User-agent line that comes after a rule starts a new group.

Why is my URL blocked when I wrote an Allow rule for it?

Usually for one of two reasons. A longer Disallow also matches the URL and outranks your Allow, or the Allow sits in a group the crawler does not use — for example in the * group when the crawler has a group of its own. The Show the math list names every matching rule with its length and line.

Does Googlebot follow the rules in the User-agent: * group?

Only when no group names Googlebot. As soon as a Googlebot group exists, the * group is ignored for Googlebot completely, so repeat any * rules that should also apply to it. The same goes for every crawler.

How do I block AI crawlers without affecting Google Search?

Add a group listing the AI tokens you want to exclude — for example GPTBot, ClaudeBot, CCBot, Google-Extended and Applebot-Extended — followed by Disallow: /, and leave Googlebot and Bingbot out of it. Paste the result here and check that Googlebot still shows Allowed in the crawler table.

Is a page blocked by robots.txt removed from Google?

Not necessarily. A Disallow stops crawling, not indexing, so a blocked URL can still appear in results if other pages link to it, normally without a description. To remove a page, let it be crawled and serve a noindex robots meta tag or X-Robots-Tag header.

What does an empty Disallow line mean?

Disallow: with nothing after it matches no URL, so it allows everything for that group. It is the opposite of Disallow: /, which blocks the whole site. A group with no rules at all behaves the same as an empty Disallow.

Is the robots.txt I paste sent anywhere?

No. Parsing and matching run in this page's JavaScript, the file is not uploaded, and nothing is fetched from your site. Only the URL and crawler name are written into the page address, so a shared link never contains the file.

Disclaimer. Results follow RFC 9309 as written, with Google's documented token fallback as an option; individual crawlers may interpret robots.txt differently, and none is obliged to obey it.

Last updated . Found a mistake? Tell us — corrections ship the same week.