Skip to content

Layer 2 - Renderability

Weight: 25% of open score

Layer 2 checks whether AI agents can extract meaningful content from the raw HTML without executing JavaScript.


page-returns-content - Page returns content to plain HTTP GET

Possible statuses: pass / warn / fail

Fetches the root URL simulating a browser navigation (full Accept, Sec-Fetch-*, Accept-Language headers). Fails on HTTP errors or network failures. Warns if fewer than 50 words of body text are found.

Why it matters: Most AI crawlers do not execute JavaScript. A page that returns an empty <div id="root"></div> to a plain GET is effectively invisible to them, regardless of how rich its client-side content is.


heading-hierarchy - Heading hierarchy present in raw HTML

Possible statuses: pass / warn

Counts <h1> and <h2> elements in the raw HTML.

Why it matters: Headings provide semantic structure that AI models use to understand document hierarchy and identify key topics. A page with no headings in raw HTML is likely JS-rendered.


image-alt-coverage - Image alt text coverage

Possible statuses: pass / warn / fail / info

Calculates the percentage of <img> elements that have an alt attribute. Returns info if no images are present.

CoverageStatus
100%pass
> 75%warn
≤ 75%fail

Why it matters: Alt text is the primary way AI models understand images. Missing alt text means visual content is opaque to language models indexing the page.


content-threshold - Body content above minimum threshold

Possible statuses: pass / warn / fail

Word countStatus
≥ 200pass
50–199warn
< 50fail

Why it matters: Very low word counts almost always indicate a JavaScript-rendered page or a near-empty document. AI crawlers need sufficient text to build a meaningful representation of the page.