A 200 Response Does Not Prove an AI Crawler Can Read Your Site A developer warns that an HTTP 200 response does not prove an AI crawler can read a site, as CDN classification, robots rules, and challenge pages can all return 200 while blocking actual content. The developer proposes a layered probe that compares responses across user agents and checks transport, policy, and page identity, and offers a free AI crawler accessibility checker at aicrawlable.com. A crawlability check often begins with a comforting result: request the homepage, receive HTTP 200, and declare the site open. That conclusion is too broad. The response only proves that one client, from one network, with one user agent and one request shape, reached one representation of the page at one moment. AI crawlers do not necessarily share any of those conditions. A CDN may classify their user agents differently. A robots rule may apply to one bot but not another. A challenge page may return 200 while replacing the actual document. Even when the HTML is real, the canonical URL or robots metadata can make the page unusable for discovery. The practical fix is to stop treating the status code as the verdict. Treat it as one item in an evidence chain. Consider three requests to the same page. A normal browser user agent receives the product page. A generic script receives a managed challenge. A named crawler receives a 403 from a WAF rule. The URL has not changed, but the effective access policy has. This is why a single curl command is a poor proxy for crawler access. It compresses transport, policy, identity, and content into one number. When the number is 200, it also hides soft failures: consent walls, bot challenges, login interstitials, and branded not-found pages can all be successful HTTP responses. A useful probe records at least the requested user agent, status, final URL, content type, title, canonical URL, robots directives, and a small fingerprint of the returned body. The fingerprint does not need to retain the page. It only needs to show whether two clients received materially different documents. js async function probe url, userAgent { const response = await fetch url, { redirect: "follow", headers: { "user-agent": userAgent } } ; const html = await response.text ; const title = html.match /