AI Visibility Monitor
AI visibility monitoring is a daily check of whether AI crawlers can fetch and read your pages — measured by requesting each page as GPTBot, ClaudeBot and PerplexityBot and comparing what comes back to what a normal browser receives.
Search is moving into AI assistants. When someone asks ChatGPT or Perplexity for a recommendation, the answer is built from pages those crawlers were able to fetch and read. If yours cannot be read, you are not a candidate — and nothing in your analytics will tell you, because a crawler that is turned away leaves no trace in your traffic.
This is not the same question as whether your site is up. A site can answer 200 to a browser and 403 to GPTBot, which is exactly why it goes unnoticed for months.
Two ways to be invisible, and they look identical from the outside
Being blocked and being unreadable produce the same result — no citation — but they need opposite fixes, and most tools report neither.
- BLOCKED: your server or CDN returns 403 to an AI crawler while serving browsers normally. Vercel and Cloudflare both ship settings that do this, sometimes by default.
- DISALLOWED: robots.txt turns a crawler away, often one nobody meant to exclude.
- EMPTY: the crawler is let in, gets a 200, and receives a page with almost no text because the content renders in the browser. Crawlers do not run JavaScript.
- A page can pass every uptime check and every Lighthouse audit while being completely unreadable to AI.
How the check works
- 01
Fetch as each crawler
We request your page with the documented user agent for GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, CCBot and Google-Extended.
- 02
Fetch as a browser, in the same run
The control. Without it a 403 is indistinguishable from a site-wide outage — and a bot-only block is invisible to every normal test.
- 03
Count readable words
Scripts and markup stripped. This is what catches the page that returns 200 with nothing on it.
- 04
Read robots.txt per user agent
Matched per crawler with the wildcard fallback, because a site can serve a perfect 200 and still tell that crawler to leave.
- 05
Report blocked separately from empty
Different problems, different fixes. A single red badge for both is useless to act on.
What you get
Measured, never modelled
Every number is a real HTTP response from your live site. Nothing is estimated or sampled.
Catches what hides
A crawler-specific block passes curl, passes Googlebot and passes your monitoring. Only a bot-versus-browser comparison exposes it.
Dated, always
Every score carries the moment it was measured. A confident number with no timestamp is how stale dashboards mislead people for months.
Honest about its limits
We report whether AI CAN read you. We never claim a model will cite you — that is not knowable, and we will not sell you a number we cannot defend.
Against a normal uptime or SEO check
| Uptime / classic SEO tools | CRO9 | |
|---|---|---|
| Requests as an AI crawler | No — browser or Googlebot only | Six AI crawlers, documented user agents |
| Browser control in the same run | No | Yes — the only way a bot-only block shows up |
| Detects a 200 with no readable text | Rarely | Yes, by word count |
| robots.txt per user agent | Sometimes, as a file check | Parsed per crawler with wildcard fallback |
| Tells blocked apart from empty | No | Yes — opposite fixes |
Frequently asked questions
Can you tell me if ChatGPT will cite my site?
No, and be sceptical of anyone who says they can. There is no API for it, and answers vary by prompt and by day. We measure whether the crawlers can fetch and read your pages, which is the part that is a fact rather than a guess — and it is the prerequisite for being cited at all.
My site loads fine. Why would a crawler be blocked?
Bot protection at the CDN. Vercel and Cloudflare both offer AI-crawler blocking, and it can be on without anyone deciding to turn it on. The block applies to the crawler and not to you, which is why it survives every test you would think to run.
What does "gets no text" mean?
The crawler was allowed in and received a 200, but the page had almost no readable words — the content is assembled in the browser by JavaScript, which crawlers do not run. The fix is server-side rendering, not an access change.
Does WordPress hurt AI visibility?
No. The platform is irrelevant; what matters is whether the HTML that is served contains readable text and whether the crawler is allowed to fetch it. We have measured WordPress sites at full marks and JavaScript sites at zero.
How often do you check?
Daily on a paid plan, and on demand for anyone — the check on our homepage is free, needs no account, and runs the same engine.
Related capabilities
AI-Optimizing Forms
AI-optimizing forms are web forms that test their own fields, labels and buttons against real visitor behavior and keep the version that converts. Build one in CRO9 with drag and drop, free.
Read more147 Behavioral Metrics
Behavioral metrics measure what visitors actually do — rage clicks, dead clicks, scroll depth, form hesitation, exit points. CRO9 captures 147 of them from one script.
Read moreNon-Converter Focus
Most analytics studies the few who converted. CRO9 studies the ones who did not — the 95% of visitors who leave — because that is where the recoverable revenue is.
Read moreFind out in ten seconds whether AI can read your site.
Run the free 33-point scan on your site, or start tracking with one line of code. No card required either way.