The AI-visibility page checklist · free

Every check, and how to pass it.

The checks our free checker runs on a page, grouped by weight, each with what it means and the fix.

PDF · 9 pages · 5 sections. Most of it is on this page; the whole checklist comes as a PDF.

What’s inside

3 of 5 on this page. The rest, and the whole checklist as one file, by email.

  1. 01Structured data6 checks, 30% of the score. What a machine reads to know what the page is.
  2. 02Answer-first structure6 checks and a tip, 30% of the score. The lead engines quote, and what stops them.In the PDF
  3. 03Entity grounding2 checks and a tip, 15% of the score. Tying the page to the brand engines already know.In the PDF
  4. 04Metadata5 checks, 15% of the score. The invisible basics, sized right.
  5. 05Crawlability4 checks and a tip, 10% of the score. Whether an engine can reach the page at all.

How the score is put together

Five categories carry fixed weights. Inside each one, a critical check counts three times a minor check and an important check counts twice — and a category is never carried by clearing the cosmetic items while a prerequisite is failing.

30%Structured data
30%Answer-first structure
15%Entity grounding
15%Metadata
10%Crawlability
Inside a groupCritical counts three timesImportant twiceMinor once
Five groups, fixed weights. A group is never carried by clearing the cosmetic items while a prerequisite fails.
GroupWeightChecksWhat it answers
Structured data30%6Can a machine tell what this page is about, unambiguously?
Answer-first structure30%6 + 1 tipIs there a passage worth quoting, near the top, that stands alone?
Entity grounding15%2 + 1 tipCan an engine connect this brand to the entity it already knows?
Metadata15%5Are the invisible basics present and correctly sized?
Crawlability10%4 + 1 tipCan an engine reach and index the page at all?

A few checks need a live fetch — the status code, robots.txt and llms.txt. When a page is pasted rather than fetched, those are reported as "not assessed" and pass. The rubric stays comparable between runs rather than punishing a page for how it was submitted.

Changed 2026-10-10. llms.txt is reported and no longer scored. FAQPage markup moved from important to minor, and missing JSON-LD from critical to important, after Google retired FAQ rich results and said structured data is not required for its AI features. A score from before that day was graded by the earlier rubric, and the history marks the first check graded by this one.

Changed 2026-10-14. We scored 266 pages that ChatGPT search and Perplexity cited in our own runs, and corrected the checks those pages failed for no good reason. Opening with an "X is a …" definition and carrying an "also known as" line became tips outside the score: 5% and 12% of the cited pages did either. The recency checks now apply to articles and dated pages only. The lead check reads the first real paragraph after the H1, past cookie notices and bylines. Structured data added only by JavaScript now fails, and says so. Most cited pages score 80 or more.

30% of the score · 6 checks

Structured data

Structured data is not a ranking lever, and Google says it is not required for AI features. It is something better: the cheapest way to hand a machine unambiguous facts about what this page is and what it describes.

What a reader sees

Name[Product]

Made by[Brand]

Category[Category]

Price[Price]

Nowhere on the page

What a machine reads"@type": "Product"

"name": "[Product]",

"brand": "[Brand]",

"category": "[Category]",

"price": "[Price]",

"award": "[…]"not on the page, so not in the markup

The cheapest way to hand a machine unambiguous facts. Every fact in the JSON-LD is one a reader can see on the page, and a block that fails to parse counts for nothing.
JSON-LD structured data presentImportantjsonld-present

Schema.org JSON-LD states the entity, its facts and its relationships in a form machines read without guessing, which helps tell a brand and its products apart. Google says structured data is not required for its AI features. This check is important, not critical. JSON-LD that only appears once JavaScript runs fails it: most AI crawlers do not run scripts.

Fix: add a <script type="application/ld+json"> graph describing the page entity — Organization, Product, Article or Service — plus the WebPage itself.

JSON-LD parses cleanlyCriticaljsonld-parses

A block that fails to parse is ignored entirely. Invalid structured data is worth exactly as much as none, while looking like work was done.

Fix: validate every block and repair the syntax error. A trailing comma is the usual culprit.

A primary entity type is declaredImportantprimary-entity

Without a recognised type, nothing tells an engine what kind of thing this page is about.

Fix: declare one of Organization, Product, Article, Service, WebSite, WebPage, SoftwareApplication or LocalBusiness, with a clear name.

FAQ content is marked up as FAQPageMinorfaq-schema

Optional. Google stopped showing FAQ rich results in May 2026, and no engine documents reading FAQPage markup for its answers. The visible questions and answers are what an engine reads, and the answer-first checks below grade those. Pages with no Q&A content pass: there is nothing to mark up.

Fix (optional): add FAQPage JSON-LD that mirrors the visible questions and answers exactly.

Recency signal presentMinordate-modified

Articles and dated pages only: a homepage or product page without a date is not marked down. Engines favour fresh sources, and with no dateModified an article has nothing to signal recency with.

Fix: add dateModified to the page's JSON-LD and keep it honest — bumping it without a substantive change is a low-trust signal and it ruins your own before-and-after readings.

Content is recently updatedMinorfreshness-recent

Articles and dated pages only. Citation priority decays once a page goes stale. This passes when dateModified falls within roughly the last six months and is not in the future.

Fix: refresh substantive pages on a real cycle and let the date follow the work.

15% of the score · 5 checks

Metadata

The invisible layer. No reader notices any of it, and every one of these is an hour's work at most.

Title tag presentImportanttitle

The title is the first thing that names the page's subject to a machine.

Fix: add a descriptive <title> naming the subject, answer-first.

Meta description present and well sizedImportantmeta-description

Passes between 50 and 170 characters; aim for 120 to 160. Too short says nothing, too long gets cut.

Fix: summarise the page answer-first in about 155 characters.

Canonical URL setMinorcanonical

Without one, duplicate URLs split the signals that should have accumulated on a single page.

Fix: add <link rel="canonical"> with the page's preferred URL.

OpenGraph title presentMinorog-title

Preview metadata decides what a shared link looks like — which decides whether it gets clicked at all.

Fix: add og:title and og:description.

Images have alt textMinorimg-alt

Missing alt text hides an image's meaning from engines and from assistive technology alike.

Fix: add descriptive alt text to every meaningful image, and restate any in-image number in nearby prose.

10% of the score · 4 checks and 1 tip

Crawlability

The smallest weight and the strictest rule. A page that fails here cannot be cited whatever the rest of the score says, which is why one of these checks is critical.

An answer crawler

robots-allowed

robots.txt allows the pathEach answer crawler, by its own rules

http-ok

A healthy statusThe page returns 200

indexable

No noindexFail this and nothing else counts

canonical-self

Canonical points hereOr the credit goes elsewhere
Can be cited

10% of the score, the strictest rule. A page that fails a gate cannot be cited whatever the rest of the score says. llms-txt is reported, not scored.

Four gates between a crawler and a citation. Check names as the free checker reports them.
The page is indexableCriticalindexable

A robots meta tag telling engines not to index the page ends the conversation — it cannot be cited however well optimised it is.

Fix: remove the noindex directive if you want this page cited.

Served with a healthy statusImportanthttp-ok

A non-2xx status means engines may never fetch or index the page. Reported as not assessed when the HTML was pasted rather than fetched.

Fix: make sure the page returns 200 — repair the redirect chain or the error.

robots.txt allows this pathImportantrobots-allowed

If robots.txt refuses the path to an answer crawler that follows it, that engine cannot fetch it. The check reads each live and search crawler by its own rules: a rule that names only bingbot still counts. Two fetchers act when a person asks, and their vendors say robots.txt may not apply to them: ChatGPT-User and Perplexity-User. A rule against them still fails the check, because it is the site's stated refusal, and the finding says it may not stop the fetch. Blocking bulk training crawlers is a licensing choice, and this check leaves it alone.

Fix: allow the path for the crawlers you want reaching the page. Rules to copy are in the templates pack, and the access checker tests each agent live.

Canonical points at this pageMinorcanonical-self

A canonical pointing elsewhere hands the credit to that page instead. Sometimes deliberate; usually a template left on the wrong setting.

Fix: point the canonical at this page's own URL unless you genuinely want another page to win.

The site publishes /llms.txtMinorllms-txt

Reported, not scored. llms.txt is a proposed convention, and no engine documents using it: Google says Search does not read it. Chrome's experimental agentic-browsing audit in Lighthouse checks for one. Publishing one is cheap and harmless, and has not been shown to change citations.

Fix (optional): publish one listing your important pages. The generator builds it from your sitemap.

What this checklist cannot tell you

Every check above grades one page against what an engine can read. None of them can find out whether an AI tool actually names you when a buyer asks, which depends on your entity foundation, on independent corroboration, and on how well the page answers that specific question. A page can score 100 and still never be mentioned.

That is the honest division of labour: the checklist and the free checker answer "is something wrong with this page?". Answering "are we in the answer, and did the fix move it?" needs repeated sampling across engines over time — which is the paid product, and we would rather state it plainly than dress a page score up as a visibility score.

In the PDF

The checks behind 45% of the score are in the PDF.

Answer-first structure and entity grounding decide whether an engine can quote a page and tie it to your brand. Every check in both groups, with what it means and the fix, is in the checklist.

  • Answer-first structure6 checks and a tip, 30% of the score. The lead engines quote, and what stops them.
  • Entity grounding2 checks and a tip, 15% of the score. Tying the page to the brand engines already know.

  • Score a page by hand. Every check with its weight, to tick through on any page, including drafts the checker cannot fetch.
  • Know when a check changes. We email you when a check is added, retired or re-weighted. Your copy never falls behind the checker.
  • Brief your writers. Each fix is written for whoever edits the page, not for a developer.

One email with your copy, then a note only when the checklist changes. One-click unsubscribe on every email. How we use your address.