Skip to content
SilktideHelp

Content without JavaScript

Silktide checks that the text of your pages is present in the HTML your server sends, rather than being assembled in the browser by JavaScript. Most AI crawlers do not run JavaScript, so content that depends on it is invisible to them.

Most - including GPTBot (ChatGPT), ClaudeBot, PerplexityBot, and CCBot - read the raw your server returns, exactly as sent, without executing . If your page's content is built in the browser, these crawlers receive an empty shell: no text to understand, quote, or cite.

Why this matters

Traditional search engines largely solved this problem: Google renders JavaScript before indexing. Answer engines have not. A JavaScript-only page can rank well in Google while being completely invisible to the AI systems that increasingly answer users' questions directly.

Because this is a whole-page delivery problem, it silently defeats every other answer-engine optimisation: , freshness, and authority signals are worthless on content the crawler never receives. It also affects human visitors on failed or blocked scripts, and slows the first meaningful paint of your pages.

How to fix it

The fix is to deliver your content as HTML from the server, which usually means changing how pages are rendered rather than editing individual pages:

  1. Server-side rendering (SSR) - frameworks such as Next.js and Nuxt can render each page on the server so the first response contains the full content, with JavaScript enhancing it afterwards.
  2. Static site generation - pre-build pages as plain HTML at publish time. Ideal for content that does not change per visitor.
  3. Pre-rendering - if you cannot change frameworks, a pre-rendering service or build step can serve a rendered HTML snapshot to crawlers.

Ask your development team which approach fits your stack; all three produce pages whose content survives without JavaScript.

How Silktide tests this

  1. Test only indexable HTML pages where the raw (pre-JavaScript) HTML was captured during the crawl. If the raw HTML is unavailable - for example, resource downloading was disabled when the page was crawled - the check is not applicable.
  2. Extract the meaningful body text from the fully rendered page, excluding navigation, headers, and footers. Pages with less than about 300 characters of rendered content are skipped - there is nothing significant to miss.
  3. Extract the meaningful body text from the raw HTML the same way. Text inside <noscript> counts, because non-rendering crawlers do receive it.
  4. Warn only when the raw text is both under 10% of the rendered text and tiny in absolute terms (under about 150 characters) - a genuine empty shell, not a page that merely enhances itself with JavaScript.

The comparison is based on extracted text lengths only, so it behaves the same in every language.

Troubleshooting

My page uses JavaScript but is not flagged

That is expected. Pages that serve their main content as HTML and use JavaScript for enhancement - menus, widgets, personalisation - pass this check. Only pages whose content is almost entirely absent from the server response are flagged.

The check says it is not applicable

Silktide needs the raw server response captured at crawl time to make the comparison. This is unavailable when resource downloading is turned off for the website; re-scan with it enabled.

Learn more

Last updated

Was this page helpful?