SEO Guide

JavaScript-Only Content and SEO

Why content that only appears after JavaScript runs may be invisible to crawlers, and how to check what your server actually returns.

Server HTML versus rendered HTML

When a browser requests a page, your server returns an HTML document. For many modern sites, that initial HTML is a shell, and JavaScript running in the browser fills in the content. This is called client-side rendering.

A person visiting the page sees the final rendered result. A crawler that does not execute JavaScript sees only the server HTML. If your title, headings and body text are inserted by JavaScript, they do not exist in the response the crawler receives.

Which crawlers render JavaScript

Google and Bing queue pages for a second pass that runs JavaScript, but that pass happens later and is not guaranteed. Many AI crawlers do not render at all. If your content does not exist in the server HTML, those crawlers never see it.

Even for crawlers that do render, the first response determines whether a page is worth adding to the render queue. A page with no visible text in the initial HTML may not make it past that gate.

How to check what a crawler sees

View the page source in your browser (not Inspect Element, which shows the rendered DOM). The source is the HTML your server sent. If your headlines and paragraphs are not visible in that source, they do not exist for a non-rendering crawler.

SEOAST audits only the server HTML. When a page has almost no visible text in the response, the render_dependency check reports it.

Server-side rendering as a solution

Server-side rendering (SSR) means your server runs the JavaScript and returns a fully populated HTML document. Static site generation (SSG) builds the HTML at deploy time. Both approaches put your content in the first response, making it visible to every crawler.

Frameworks like Next.js, Nuxt and SvelteKit support SSR and SSG by default. Many client-rendered apps can add prerendering for their most important pages without rewriting the entire site.

What SEOAST measures

The js_only_content and render_dependency checks compare the visible text in the server HTML against the total page weight and inline script size. When the ratio suggests that most content is missing until JavaScript runs, the audit reports it.

Check your page

Audit any URL to see how much of your content exists in the server HTML.

Audit your page