Free · nothing to sign up for
The AI visibility checklist
46 checks that decide whether an answer engine can reach, read and attribute your pages — 15 of them critical. Every one is measurable from your published HTML, so you can work through the whole list without any tool.
What this list cannot cover. Every item here is about your own pages. None of it tells you whether an engine actually mentions your brand, whether it means you rather than a company with a similar name, who it recommends instead, or whether what it says about you is true. Those need real questions put to real engines — a different measurement, not a longer checklist.
Technical foundation
6 checksWrite a title of roughly 50–60 characters that names the thing and its category.critical
It is the strongest single label an engine has for the page. Past ~60 characters the end gets truncated, and the end is usually the part that distinguishes you.
Write one meta description of 120–158 characters that summarises the page.
Answer engines frequently lift it verbatim as the page summary. Two descriptions means you do not control which is used.
Put exactly one H1 on the page, naming its subject.critical
Several competing top-level headings make the page's subject ambiguous to anything building an outline.
Add <meta name="viewport" content="width=device-width, initial-scale=1">.critical
Without it the page lays out to a fixed width, and mobile usability is a ranking input.
Serve over HTTPS and load every sub-resource over HTTPS too.critical
Browsers block mixed active content outright, so those resources may not be loading at all — and several AI crawlers skip insecure origins.
Keep redirects to at most one hop.
Crawlers spend a fixed budget per URL and some abandon long chains before reaching the page.
Structure an engine can read
4 checksPublish schema.org JSON-LD describing what the page is and who publishes it.critical
It ties the page to an entity and drives rich results and knowledge-graph linkage. What it does NOT reliably do is lift citations by itself — a matched difference-in-differences study of 1,885 pages that added JSON-LD (Ahrefs, Aug 2025–Mar 2026) found no uplift, and a small decline in AI Overviews. That study only covered pages already being cited, so it says nothing about a page with no visibility. Malformed JSON is worse than none — it looks handled and reads as nothing.
Nest headings without skipping levels — H2 then H3, never H2 then H4.
Engines quote passages, and the heading outline is how they decide where a passage starts and ends.
Give every image alt text that describes it.
Alt text is the only part of an image an answer engine can read.
Wrap content in <main>, <article>, <header>, <footer> and similar.optional
It lets a parser separate the body from navigation and boilerplate, so quoting picks up your content and not your menu.
Discovery and presentation
6 checksAdd one self-referential canonical URL.
Without it, trailing slashes, query strings and http/https variants each look like a separate page competing with itself.
Set a lang attribute on <html>.
It tells engines and screen readers which language to expect, and it is what makes a multilingual site resolve into separate versions rather than one confused one.
Fill in og:title, og:description, og:image and og:type.
A shared link without them renders as a bare URL, and several answer engines fall back to Open Graph for the page summary.
Add <meta name="twitter:card">.optional
One line. Most platforms fall back to Open Graph, so this is polish rather than a requirement.
Declare a favicon with <link rel="icon">.optional
It is what makes your tab findable among twenty others, and it appears beside your result in several AI answer interfaces.
Mark up breadcrumbs with BreadcrumbList JSON-LD on pages below the homepage.optional
It tells an engine what this page is a part of, rather than leaving it as an island.
Credibility signals
6 checksName who wrote the page, in schema.org author or a visible byline.
Anonymous content is weighted down by engines trying to assess expertise, and a name is the cheapest credibility signal there is.
Publish datePublished and dateModified.
An undated page reads as unknown age, and engines discount what they cannot date — especially where currency matters.
Add an Organization node with name, url, logo and sameAs.
This is what connects the page to an entity an engine already knows, instead of leaving it an unattributed document.
Link a contact or about page from every page.
No visible way to reach anyone is a long-standing low-trust signal for readers and engines alike.
Cite your sources in the sentence — "according to X" with the link.
A page that cites nothing asserts everything on its own authority. Engines assembling an answer prefer pages that show their working.
Give the page enough substance to answer something — a few hundred words at minimum.
Engines quote passages, and a thin page offers none. This is usually the single biggest reason a page is never cited.
AI crawler access
19 checksAllow GPTBot in robots.txt.critical
Blocked, OpenAI cannot crawl the page at all.
Allow OAI-SearchBot in robots.txt.critical
This is the crawler behind ChatGPT search results specifically — separate from GPTBot.
Allow ClaudeBot in robots.txt.critical
Blocked, Anthropic cannot crawl the page.
Allow PerplexityBot in robots.txt.critical
Blocked, the page cannot be cited by Perplexity.
Allow Googlebot in robots.txt.critical
AI Overviews are built on the Search index, so blocking Googlebot removes you from both at once. This is not the same as Google-Extended.
Decide deliberately whether to allow Google-Extended.
It governs Gemini grounding, not Search. Blocking it is a legitimate choice with a known cost — unlike blocking Googlebot, which is rarely intended.
Decide deliberately whether to allow CCBot.
Common Crawl feeds many AI systems indirectly. Blocking it is a real policy position, not an error.
Allow Bingbot in robots.txt.
Bing backs Microsoft Copilot, and ChatGPT search leans on it too.
Publish a valid XML sitemap and check the body, not just the status code.
A single-page app answers 200 for every path, so a sitemap that 'exists' may be your homepage HTML at a different URL — which looks fine to a status check and like nothing to a crawler.
Add a Sitemap: line to robots.txt.
It is the first place every crawler looks.
Consider publishing /llms.txt summarising the site and linking its key pages.optional
No public evidence yet shows that adding one increases citations on any engine. Listed because it costs almost nothing and adoption may grow — not because it is known to work. An HTML shell served at that path is worse than a 404.
Use question-form headings, FAQ blocks and structured lists.
Answer engines lift self-contained passages. Prose with no seams gives them nothing to lift.
Add sameAs links to authoritative profiles, and about/mentions for the entities you cover.
This is what ties the page to a known entity instead of a string — and names collide more often than people expect.
Declare your own domain's logo FIRST in Organization markup, before any other.critical
Consumers read logos in document order, so a sibling brand's logo listed first becomes your brand's mark everywhere — and nothing errors, because a logo that loads looks like a logo that is right.
Serve the main content in the initial HTML — server-side rendering or prerendering.critical
Measured at scale: GPTBot, ClaudeBot and PerplexityBot do not execute JavaScript. Content rendered client-side is invisible to them; only Google's surfaces render. A SPA can pass every other check on its empty shell.
Remove nosnippet / max-snippet limits from pages meant to appear in AI answers.critical
Google documents these directives as governing AI Overviews and AI Mode exactly as they govern classic snippets — the directives that actually control AI quoting, unlike noai.
Check the CDN/WAF bot rules if AI bot user agents are refused while browsers pass.critical
Cloudflare blocks AI crawlers by default on newer zones even when robots.txt allows them. The probe is UA-level evidence from one address; IP-verified bots may differ — server logs are the proof.
Know which CDN sits in front of the origin — that is where a silent AI block would live.optional
Being behind a CDN is not a defect; the finding is the layer's name, because its bot settings decide AI access before robots.txt is ever read.
Check the meta robots tag and the X-Robots-Tag header for noindex or noai.critical
A header-level directive overrides robots.txt and is easy to set once during a staging deploy and forget.
Agent readiness (optional)
5 checksSend a Link header such as </sitemap.xml>; rel="sitemap".optional
Lets an agent find canonical resources without parsing HTML.
Consider a Content-Signal directive in robots.txt.optional
It lets you say yes to AI search while saying no to training, instead of the all-or-nothing choice a Disallow forces.
Publish /.well-known/mcp.json only if the site actually exposes MCP servers.optional
An invented descriptor is worse than none — it advertises capabilities that do not exist.
Publish /.well-known/agent-card.json only if the site hosts an A2A-compatible agent.optional
Same rule: describe what is there, not what you would like to be there.
Publish /.well-known/api-catalog only if the site exposes APIs.optional
Lets agents discover endpoints without scraping documentation.
Or have it checked for you, in about ten seconds
Same 46 checks, run against your site, with the specific fix for each thing that fails. Free, no signup.
Scan my site