For the complete documentation index, see llms.txt. Every page on this site is also served as Markdown: append `.md` to any URL, or send `Accept: text/markdown`.
Skip to content

Free tool

AI crawler URL inspector

The AI crawler URL inspector fetches one URL as each AI crawler would. It shows what your robots.txt allows for GPTBot, ClaudeBot, PerplexityBot and the rest, what a real fetch returns, and how much of the page exists before JavaScript runs, because several AI crawlers read the HTML without running it. Free.

Check a URL

Seconds: one fetch per crawler, as Attensira · Free, no sign-up

Paste the exact page you want cited. We read the site's robots.txt, then make one request per crawler and report what came back. Free, no sign-up, the whole result is shown.

Four requests, one page.

GPTBot, ClaudeBot, PerplexityBot and Googlebot each get their own fetch. You will get the robots.txt verdict, the HTTP status, the redirect chain hop by hop, the content type and the byte count for each one — plus how much of the page is readable text before any JavaScript runs.

We send our own user-agent and name the crawler we are asking about inside it. We never send somebody else's crawler token.

Your result appears here

robots.txt
allowed or blocked, per crawler
Each fetch
status, redirects and size
Text without JavaScript
words, share of the HTML
Script share
of the HTML, with the tag count

See our own run

Share
Fetches4 crawlers · one URL
GET attensira.com/guides/ai-crawler-guideOne request per crawler, sent as Attensira
Agentrobots.txtSizeStatus
GPTBot, operated by OpenAIAllowed by name250.7 KB200
ClaudeBot, operated by AnthropicAllowed by name250.7 KB200
PerplexityBot, operated by PerplexityAllowed by name250.7 KB200
Googlebot, operated by GoogleAllowed by name250.7 KB200
Text without JavaScript
4,726 words, 11.8% of the HTML
Script share of the HTML
67% (33 script tags)
AI crawler URL inspector, production, n=1 run ·

Which three questions does it answer?

  1. May each crawler fetch it?

    Your robots.txt, parsed under RFC 9309, read for each crawler's access to the site root.

  2. What does each crawler get back?

    One real request per crawler: status, every redirect hop, content type and bytes. A permitted crawler can still meet a 403, a consent wall or a redirect.

  3. Can it be read without JavaScript?

    The text left once scripts, styles and tags are removed, as a share of the document, beside the script share.

What do the crawlers get from one of our pages?

We ran it on attensira.com/guides/ai-crawler-guide, our own guide to AI crawlers.

Every crawler is allowed and gets the whole guide in the first response: 4,726 words are there before any script runs. That is the result that matters.

The weaker number is the 67% of the bytes that are script. It does not hide any text from a crawler today, but it is weight every fetch pays for, and it is the first thing to look at if a page's text share ever drops.

The fetches are the log at the top of this page. Read on 4 Oct 2026.

Does it pretend to be GPTBot?

This matters enough to state twice. Every request this tool makes carries our user-agent, with the crawler we are asking about named inside it, something of the shape Attensira (asking-as GPTBot; not GPTBot). We do not send GPTBot as our user-agent, because sending somebody's crawler token to a stranger's server is a claim to be that company.

The honest consequence: a site that varies its response by user-agent (a bot-management product, a paywall with a crawler allowlist, an edge rule keyed on the token) may answer the real crawler differently than it answered us. What you get here is a real response from your server to a real request, which is far more than robots.txt gives you, and it is not a recording of what OpenAI or Anthropic saw. We cannot see that, we do not intercept anyone's traffic, and nothing on this page should be read as if we did.

The only record of what a crawler genuinely received is the one your own server wrote. That is a question your access logs answer, not this tool.

How is it different from reading robots.txt?

robots.txt is a statement of permission. It says what a crawler may fetch, and nothing about what it gets when it does. This inspector reads the permission too, at the site root, because that is the one path every site has. Then it fetches the page and adds what the file cannot show: the status code, the redirect chain and the markup the request received.

A page can be allowed by robots.txt and return a 404. It can be allowed and 302 to a login screen. It can return a clean 200 whose body is an empty container waiting for a script. Each of those is invisible to a robots.txt check and each of them ends the same way: nothing to cite. To write the permission side, use the robots.txt generator.

Who keeps every page fetchable after this check?

Inside Attensira, a robots.txt change is a pull request that waits for your review: it is not on the safe list, so it never ships on its own. A rendering problem lives in source code, which the crew never edits, so it reaches you as a task instead. From Growth up, Crawler Logs show which AI crawlers actually fetched which pages. What ships on its own, what waits, what is refused.

Pull requestyour-site

robots.txt: keep /api/ closed to every crawler, the rest open

attensirawaits for your review

public/robots.txt

  1. unchanged: User-agent: *
  2. unchanged: Allow: /
  3. added: Disallow: /api/
Web engineer agentWeb engineer · would hand you a pull request like thisExample · the kind of change this finding calls for, not one that shipped

How do you read the text-versus-script split?

The two percentages are shares of the same denominator, the bytes the server returned, and they do not add up to 100. The remainder is tags, attributes and CSS: neither readable prose nor executable script.

There is no pass mark here, and we are not going to invent one. No operator publishes a threshold for how much server-rendered text a page needs, so any line we drew would be a number we made up, and it would be the number you acted on. What the split tells you is factual and narrow: an agent that fetches your HTML without running a browser has exactly the words in the text column available to it. If that column is nearly empty on a page you want quoted, the words you want quoted are not in the response.

Whether a given crawler executes JavaScript is a separate question, and not one this tool can answer. Operators change that behavior without announcing it, and several documented crawlers fetch HTML only. We measure what was served; what each crawler does with it is the operator's to say, which is why every token in the table links to its own operator documentation.

What do you do with each finding?

What it showsWhyWhat to do
Allowed by robots.txt, but the fetch returned 403Why: Something between the crawler and your origin refuses on its own terms: a WAF rule, bot management, or a rate limiter that treats unusual user-agents as hostile.What to do: Change the rule in the product that imposed it. robots.txt cannot undo it.
A long redirect chain before the 200Why: Chains from http to https to www to a trailing slash. Each hop can lose the crawler and the canonical signal.What to do: Collapse the chain into one hop.
Blocked at the root, but the page mattersWhy: A blanket Disallow: /, usually a staging file that shipped.What to do: Write the file you meant, then run both checks again. robots.txt generator
200, HTML, and almost no textWhy: The page renders client-side.What to do: Server-render the primary content; a summary in the HTML is a partial fix. Then check how the words are organised. Content structure score
An empty mount point with no text around itWhy: The inspector parsed an element with no children: a fact about the bytes, not a guess about your framework.What to do: The same fix as almost no text: put the content in the server response.

Questions people ask about this check

Are you showing me what ChatGPT or Claude actually saw?

No, and we will not pretend otherwise. We make our own request and name the crawler we are asking about in our user-agent, without sending that crawler's token. If your infrastructure varies its response by user-agent, the real crawler may have been served something different. We do not intercept traffic between anyone and an AI assistant, and no tool that does not run on your server can.

Why is the robots.txt verdict for the site root rather than my URL?

Because this tool's job is the fetch, and the root verdict is the context around it. A root-level Disallow is what stops a crawler reaching anything, so it is the verdict that decides whether the rest of this report matters. Path-scoped verdicts (which specific rule, on which line, decides one URL) are not reported here yet.

What counts as text in the text share?

Everything left after removing script and style blocks and HTML comments, stripping the remaining tags and decoding entities. noscript content is kept, because an agent that does not run JavaScript is precisely who that content was written for. Alt text and other attribute values are not counted: they are markup, and counting them would inflate the number.

The byte count looks smaller than my page. Is it wrong?

We stop reading a response at a size cap, and when we do the result says so explicitly. Past that point every count is a floor rather than a total, and the page labels it that way rather than quietly reporting a partial read as a whole document.

Do you store the URLs I inspect?

Not against you. The result is held for about an hour in a shared cache keyed by the URL, so a second run of the same URL inside that hour returns the same answer without new requests to your server. There is no account, no email field and no saved history. The shareable link runs the same URL again: after the hour the numbers can differ from the ones you saw.

This checks one URL. Attensira's crew keeps every page fetchable.

7 days free · card required