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 is four cards, top to bottom:

Content Visibility Assessment — The headline verdict: the share of your content that is invisible to AI bots, a plain-language explanation of what’s causing it, and a Recommended fix tied to that specific cause rather than generic advice. The footer shows the raw numbers behind the percentage — browser word count versus bot word count.

Visual Comparison — The two views side by side: a screenshot of the page as a visitor sees it after JavaScript runs, next to what the bot actually receives. You can toggle the bot side between Screenshot and Text. Underneath sit three numbers — Words visible to people, Visible to GPTBot, and Bot extraction gap — followed by the user agents we probed (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, ChatGPT-User, Claude-User).

Content Diff (Raw HTML vs JS-Rendered) — The itemised breakdown behind the headline gap. It carries an impact label (high, medium, low), names the source bot, and lists the specific blocks that differ — each tagged Visitors only or Bots only, with the element type, word count, and the actual text. That last part is what makes it actionable: you’re reading the literal sentences a bot will never see. Footer counters summarise the scope, and View all changed items opens the full list.

Structural Signals — Compares the page structure visitors see with what bots see. It flags heading-hierarchy gaps (for example, “32 of 33 missing in raw HTML”) and counts Semantic Headings and ARIA Labels in each version. View full heading hierarchy opens the detail.

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.

Layout and interaction stability (CLS and INP)

This tab also surfaces two Core Web Vitals that affect how reliably a page can be read and used:

  • CLS (Cumulative Layout Shift) — how much the layout moves while the page loads. Significant shifting can make content extraction less reliable when the structure changes after the initial render.
  • INP (Interaction to Next Paint) — how quickly the page responds to input. This matters most for AI agents that interact with pages rather than read-only crawlers.

Both come from real-user field data (Chrome UX Report) where available. They are secondary to TTFB and to raw-HTML content availability, but they contribute to your overall score. For grade thresholds and fixes, see Speed and stability metrics.

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.