ChatGPT, Claude and Perplexity still see only your nav and footer

Screenshot from Glenn Gabe, GSQI: Can AI search platforms render JavaScript? (retest, 19…
Screenshot: Glenn Gabe, GSQI, "Can AI search platforms render JavaScript? (retest, 19…"

Summary

ChatGPT, Claude and Perplexity still return only navigation, footer and legal text from pages whose body is built by JavaScript, in Glenn Gabe's retest 434 days after his first.

Serve the main content in the HTML response, and test by asking each platform for the first and last paragraphs verbatim rather than whether it can read the page.

ChatGPT, Claude and Perplexity still cannot read page content that JavaScript builds in the browser. Glenn Gabe, an SEO consultant who publishes search tests at GSQI, ran the same test again 434 days after his first one and got navigation, footer and legal boilerplate back from all three. Gemini and Copilot read the main content on two of the three tests.

Gabe asked each platform whether it could read a given URL and to return the first and last paragraphs, the same prompt he used in August 2025. The post shows three tests: a page with the entire body rendered client-side, a page with the header and footer in the static HTML and only the body in JavaScript, and a parallax site built on WebGL.

PlatformBody fully client-sideChrome static, body in JSParallax / WebGL
ChatGPTNav and footer onlyMain content missingLoading error only
ClaudeSite chrome onlyTitle, footer, legal textShell and meta tags
PerplexityCookie banner and fragmentsPage shell and disclaimerCalled it a WebGL experience
GeminiRead itRead itRead it
CopilotRead itRead itLimited text only

The failures were self-reported and precise about the cause. On the fully client-side page, Claude said the fetch came back 200 with nothing but site chrome, the header, the nav menus, social links and the footer, and added that the pattern “usually means a Next.js page whose main content renders client-side, so a fetcher that doesn’t execute JavaScript only sees the shell.” ChatGPT said the extraction “returned only navigation and footer elements”. Perplexity’s extraction was dominated by cookie-consent text.

Gemini and Copilot did not solve rendering. They read from Google’s and Bing’s search systems, where the rendering already happened, which is the explanation Gabe gave for the same result last year. Google’s ability to execute JavaScript is not in doubt. It has ranked a page whose body stayed hidden until JavaScript ran. The retest does not measure this, but the better bet is that those two platforms are only as current as the index behind them, so a page Google or Bing has not fetched and rendered lately gets no benefit from them. Copilot still missed the parallax page, even with Bing behind it.

The likelier explanation for the split is which bot does the work. A chatbot told to open a URL uses a live fetcher, the agents OpenAI and Anthropic document as ChatGPT-User and Claude-User, which makes an HTTP request at the moment of the prompt. On this evidence that request does not run scripts, and it is a different path from the training crawlers and from the retrieval bots that feed a search index. It is also the path most people exercise when they paste a link into a chat window, and on a new domain the first AI visitor tends to be a live fetcher rather than a crawler.

Claude offered a workaround on the parallax test, suggesting it load the page in its built-in browser and wait for it to render. The capability exists, then, but it sits behind an extra step instead of in the default fetch, so a success there says nothing about what the fetcher returns when nobody asks.

The parallax test produced the most misleading answer. Perplexity opened with yes, it could read the page, then described it as an interactive WebGL experience with one error block where the paragraphs should be, and Gabe scored it a fail. A description assembled from metadata and loading fragments reads like a working answer. Asking a chatbot whether it can read a page will get a yes well before the content is actually available to it.

What to do

  • Serve the main content in the HTML response. Nothing else in the test got the body in front of ChatGPT, Claude or Perplexity.
  • Test by asking for the first and last paragraphs verbatim, never whether the page is readable. The yes/no question returned a yes on a page that failed.
  • Check view-source, or fetch the URL with curl, before testing any platform. If the body is not in the HTML response, ChatGPT, Claude and Perplexity do not have it.
  • Do not count static header and footer markup as progress. Both failing tests had chrome in the HTML, and all it bought was nav and legal text in the answer.
  • Give parallax and WebGL pages a text equivalent in the HTML, since only Gemini read the one in the test.