The Content Visibility tab

The Content Visibility tab checks whether the important content on your page is present in the raw HTML response — or whether it only appears after JavaScript runs.

What this tab checks

This tab compares two versions of your page:

  1. The raw HTML response — what a bot receives the moment it fetches the URL, before any JavaScript runs
  2. The JS-rendered version — what a browser sees after all scripts have executed and the page is fully loaded

The tab highlights content that is present in one version but missing from the other: text that only exists after rendering (added by JavaScript), text that exists in the raw HTML but disappears after rendering, and structural differences in headings and ARIA labels.

Why it matters

Many AI systems do not render JavaScript. They fetch the raw HTML response and work with that. If your most important content — product descriptions, key facts, pricing, answers to common questions — is only injected by JavaScript, those systems may never see it.

A page can look complete and well-structured in a browser and still be effectively half-empty to an AI fetcher. This is one of the most common reasons technically healthy pages underperform in AI retrieval.

How to read the results

The tab shows:

Coverage snapshot — A word count comparison between the raw HTML and the JS-rendered version. A large gap here (e.g., 200 words raw vs 1,400 words rendered) is a signal that significant content depends on JavaScript.

Render pattern — A classification of how much of the page’s content depends on JavaScript. Patterns range from “Fully static” (all content is in the raw HTML) to “JS-heavy” (most content requires rendering).

Content diff — A side-by-side or line-by-line comparison showing exactly which text is added by JavaScript and which text is removed or changed. This helps you identify specifically which content blocks need to be moved into the server response.

Headings and structure — A comparison of the heading hierarchy (H1–H6) in each version. Missing headings in the raw HTML mean less structural context for AI systems that rely on headings to understand page organisation.

Common issues and what to do

Large word count gap between raw HTML and rendered version Your most important content is probably in JavaScript-rendered components. The fix is server-side rendering (SSR), static site generation (SSG), or pre-rendering for the content that matters most. You do not need to pre-render everything — focus on the primary text that answers questions about the page’s topic.

Key headings missing from raw HTML Section titles and heading structure that only appear after JavaScript runs means AI systems may not understand the page’s organisation. Move those headings into the initial HTML response.

Small gap with benign differences Not all differences are problems. Dynamic content like timestamps, personalised UI, cookie consent banners, and interactive widget states are expected to differ. Focus on the substantive text — product descriptions, article body, key facts, and answers.

Technical context

The comparison is made using GPTBot as the reference bot for the bot-side fetch. The rendered version is captured using a real browser (Playwright) so you can see exactly what a human visitor sees versus what the bot receives.

For pages protected by Cloudflare or similar bot challenge systems, the bot fetch may be blocked, which means the raw HTML shown is the challenge page rather than your actual content. See Troubleshooting for guidance on this.

What this tab does not check

This tab measures content availability — whether the text is present in the response. It does not measure whether the text is correct, well-written, or relevant to any specific question. For that, see the Prompt Fit tab.