Why a JavaScript site can look finished and still look thin to Google

If crawlers get a title, meta, and a short blurb while the real H1 lives in JS, search and many AI bots under-read the page. llms.txt is a second channel, not a substitute for HTML.

By Rajat Malik

A site can look beautiful in a browser and still look thin to a crawler.

What Googlebot typically sees

When a site is a JavaScript single-page app (SPA), the server sends a shell:

  • A title tag
  • Meta description
  • Maybe a nav bar
  • The real H1, the services list, the FAQ answers — all of that lives in JavaScript that runs after the page loads.

    Googlebot can execute JS, but it deprioritizes pages that require it. Other crawlers — Bingbot, AI bots like GPTBot, ClaudeBot, PerplexityBot — may not run JS at all, or may run it with limits.

    What this means for search and AI

    If the HTML body is nearly empty:

  • Google may under-value the page
  • AI answer engines may skip it entirely
  • FAQPage schema and llms.txt help, but do not fix an empty HTML body
  • What to ship

    1. SSR or prerender for money pages: the H1, H2, and body text should be in the initial HTML response. 2. 301 for www to apex: not 307, not 302. 3. Do not send no-store on public marketing HTML. 4. Keep empty blog hubs noindex until they have real posts. 5. llms.txt and company.json are a second channel for AI crawlers, not a substitute for crawlable HTML.

    What SEO does not guarantee

    Shailpar's SEO service covers technical and on-page foundations. Rankings, traffic, and AI citations are not guaranteed. Search Console review is part of a scoped engagement when you grant access — this site does not publish ranking reports.

    How to check your own site

    curl -sA "Googlebot" "https://yoursite.com/" | grep -o '<h1[^>]*>.*</h1>'

    If you see the real headline, good. If you see a placeholder or nothing, crawlers are under-reading the page.

    Start a project · More articles · llms.txt