Can AI find, read, and cite your page?
Enter a URL. We fetch the page the way an AI crawler sees it and score how findable, readable, and citable it is — with the exact fix for each issue.
What we check, and why
Every check maps to one of three questions an AI engine implicitly asks. The weights are a research-informed hypothesis — we validate them against real index/citation data on the experiments log and adjust. Rigour over false precision.
Find · 30
Can the AI reach it? Crawl access and indexability — a block here is game over.
Read · 40
Can the AI extract it? Structure, depth, and content that isn't JavaScript-only.
Trust · 30
Will the AI cite it? Structured data, a named author, and freshness.
The reasoning behind these comes from how each AI engine sources and cites content. We analyze the served HTML only — if your content is JavaScript-rendered, AI crawlers (and this tool) may not see it, which is itself the finding.
Badge & public API
The checker is free with no signup, so the rest of it is open too: a badge you can embed, and the same JSON endpoint this page runs on.
Embed the badge
If your page checks out, say so — the badge links back here so your readers can run the same check on anything they read.
<a href="https://hzsignal.com/tools/ai-readiness/">
<img src="https://hzsignal.com/badge/ai-ready.svg"
alt="AI-Ready — checked with the HZ Signal AI Readiness Checker"
width="200" height="36" loading="lazy">
</a> Public API
No key, no signup. Rate-limited to 15 checks per minute per IP —
beyond that you get HTTP 429 with "code": "rate_limited". Results are
briefly cached at the edge. It's a free tool run by one person; please keep automated
use polite.
GET https://hzsignal.com/api/readiness/?url=https://example.com/ Response (illustrative — checks arrays carry the per-check detail, points, and fixes):
{
"url": "https://example.com/",
"finalUrl": "https://example.com/",
"fetchedAt": "2026-07-05T02:00:00.000Z",
"httpStatus": 200,
"score": 84,
"band": "ready",
"criticalIssues": [],
"pillars": {
"find": { "score": 28, "max": 30, "checks": [ /* per-check detail */ ] },
"read": { "score": 32, "max": 40, "checks": [ /* … */ ] },
"trust": { "score": 24, "max": 30, "checks": [ /* … */ ] }
},
"notes": []
}
Errors return error + code: bad input is
invalid_url/blocked_url → 400 and the limiter is
rate_limited → 429, while page-level problems (unreachable, not HTML)
come back as 200 with an error body so responses always parse. The checker reads
your served HTML only and identifies itself honestly as
HZ-ReadinessBot/1.0 — it never spoofs an AI crawler.