My Site Disappeared From AI Answers. So I Built a Free Checker Roberto Iriondo built a free, no-sign-up AI Visibility Checker that scores a site out of 100 after discovering his own site had vanished from Google cards and from ChatGPT and Perplexity citations because his host returned Cloudflare 520, 522 and 525 errors to crawlers during roughly a day of outages. The checker fetches a page 13 times — once as a browser and once as each of 12 crawlers using their own user agents — and weights reach highest as a hard gate, while showing training crawlers such as OpenAI's GPTBot, Anthropic's and Perplexity's equivalents and Google-Extended without awarding points, so a site that blocks GPTBot but allows OAI-SearchBot can still score 100. It also counts words in the HTML before JavaScript runs, flagging under 50 words as an error, and marks checks from unresponsive outside sources such as Common Crawl as "did not answer, not scored" so scores move only when the site changes. A few days ago my site stopped showing up. It was gone from the Google cards it used to appear in, and ChatGPT and Perplexity stopped citing it when I asked about my own work. The code was fine. robots.txt allowed every crawler, every page had the right tags, and the structured data passed every test. The problem was the host. On and off for about a day, our server kept failing when Cloudflare connected to it, so new visitors and crawlers got error pages Cloudflare’s 520, 522 and 525 instead of the site. People who had visited before still saw it, because the site saves a copy in their browser. Googlebot and the AI crawlers have no such copy. When they came during an outage, they got an error. That is the part worth writing about. From the outside, everything looked right. The only way to see the problem was to ask for the page the way each crawler does and look at the answer it got. Most site owners have no easy way to do that, so I built one: the AI Visibility Checker https://robertoiriondo.com/tools/ai-visibility/ . It is free, needs no sign-up, and gives a score out of 100 with the fixes in order. When someone asks ChatGPT, Claude, Perplexity or Google’s AI Overviews a question, the answer is built from pages the tool can fetch and read, often at that moment. Before your page can be one of them, three things have to be true. They became the three parts of the score. Reach carries the most weight because it is a hard gate. A page nobody can fetch scores zero in every answer, however good it is. Most of the work was deciding what the score should mean. These are the decisions that shaped it. Each AI company runs more than one crawler. OpenAI has GPTBot for training, OAI-SearchBot for ChatGPT search, and ChatGPT-User for when a person asks ChatGPT to read a page. Anthropic and Perplexity have the same split. Google-Extended controls Gemini training and does not affect Google Search. Blocking training crawlers is a fair business choice, and many publishers make it. It does not stop AI assistants from citing you. So the checker shows the training crawlers but gives them no points. A site that blocks GPTBot and lets OAI-SearchBot in can still score 100. Most AI visibility checks stop at robots.txt. That would have missed my own problem, and it misses a common one: a firewall, a bot protection setting or a security plugin that turns crawlers away no matter what robots.txt says. So the checker asks for your page 13 times: once as a browser and once as each of 12 crawlers, using each crawler’s own user agent. It reports what each one got, and names a Cloudflare challenge when it sees one. If a browser gets the page and PerplexityBot gets a 403, you know where to look. There is one limit, and the page says so. Some firewalls check a crawler’s network address, not only its name. The checker sends each crawler’s name from Cloudflare’s network, so a firewall like that may treat the real crawler differently. Your server logs have the final word. Google runs JavaScript before it indexes a page. Most AI crawlers do not. A site built as a JavaScript app can look perfect in a browser and send crawlers an empty