Measure

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

  1. 01

    Fetch as each crawler

    We request your page with the documented user agent for GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, CCBot and Google-Extended.

  2. 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.

  3. 03

    Count readable words

    Scripts and markup stripped. This is what catches the page that returns 200 with nothing on it.

  4. 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.

  5. 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 toolsCRO9
Requests as an AI crawlerNo — browser or Googlebot onlySix AI crawlers, documented user agents
Browser control in the same runNoYes — the only way a bot-only block shows up
Detects a 200 with no readable textRarelyYes, by word count
robots.txt per user agentSometimes, as a file checkParsed per crawler with wildcard fallback
Tells blocked apart from emptyNoYes — 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.

Find 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.