AI Search (GEO)
AI Search (GEO)Medium

Static Content Density

Checks how much meaningful text ships in the initial HTML without JS execution.

What this check measures

We fetch the page with JS disabled, strip boilerplate, and measure the word count of extractable body text. Pages with under 100 words visible without JS are flagged as JS-dependent.

Why it matters

Even with SSR set up, you can still ship a JS-heavy page if data is fetched in useEffect or key components are marked `"use client"`. AI crawlers see only what is in the initial HTML — hidden content is invisible to them.

search

How our audit detects it

Fetch raw HTML. Strip script/style/nav/footer. Count words in the remaining body. Flag pages under a threshold (typically 100 words).

Typical findings

  • error_outlineHero headline visible but the rest of the page loads via fetch.
  • error_outlineKey content inside a `"use client"` component that renders async.
  • error_outlineArticle preview list is empty without JS — content comes from a hook.

How to fix

Push main content into server-rendered parent components. Interactive widgets (search, filters, chat) can stay client. Rule of thumb: everything an SEO-competitive user would scan in first 5 seconds must be in raw HTML.

Copy-paste fix prompt for your stack

Lovable · Cursor · Bolt · v0 · Replit · Windsurf · Claude Code · Base44

View the fix prompt →

Frequently asked questions

What about authenticated app content?expand_more
Auth'd pages are not indexed — client-rendering is fine there. This check targets public marketing/content pages.

Want this checked on your site?

Pantra runs the full audit (SEO, Security, GEO, Performance, Schema, Technical, Images) in 10 seconds and generates stack-specific fix prompts.

Scan my site

Related checks