SEO and JavaScript: Why Google Sometimes Sees a Blank Page

Christopher Fernandes
Christopher Fernandes · Founder
Last updated on July 22, 2026
The two-wave JavaScript rendering process: Google reads an almost empty HTML shell first, then queues the page to run JavaScript later.
In short
Google can read JavaScript, but not for free. It crawls your raw HTML first, then queues the page to render the JavaScript later, sometimes much later. If your content only exists after JS runs, Google may index an almost empty shell in the meantime and miss your text, links and metadata. The fix is to serve the important content in the initial HTML through server-side rendering or static generation, and to test what the crawler actually receives, not what your browser shows.

Open your site in a browser and you see a full page. Turn JavaScript off and reload, and you might see almost nothing. Google's crawler lives closer to that second version than the first, and that gap is where JavaScript quietly breaks SEO. The content is there for users; it is missing for the crawler, at least at the moment that matters. Understanding why fixes most JavaScript SEO problems before they start.

How Google actually processes JavaScript

Google handles a page in two waves, and this is the whole story:

  1. Crawl: Google fetches your raw HTML, the exact bytes your server sends, and reads whatever is in it: text, links, metadata.
  2. Render: later, sometimes minutes, sometimes much longer, Google queues the page, runs its JavaScript in a headless browser, and reads the result.

If your content is present in step one, you are safe. If it only appears in step two, you are betting your rankings on a rendering queue you do not control, and on your scripts running without error every single time.

Why client-side rendering is the trap

A client-side-rendered (CSR) app sends the browser a near-empty HTML shell plus a bundle of JavaScript that builds the page. Users never notice; the browser runs the JS instantly. But the crawler's first look is that empty shell:

  • Your headline, body text and internal links may not exist yet.
  • Your title and meta description may be set by JS, so the raw HTML shows placeholders.
  • If a script fails, hits a timeout, or depends on a click, the content never renders for the bot at all.

Google may index the shell as it first saw it: a page about nothing. That is not a Google bug; it is a rendering choice you made.

The rendering options, ranked for SEO

  • Static generation (SSG): pages are built to full HTML ahead of time. The crawler gets everything instantly. Best for content that does not change per request, blog posts, marketing pages, docs.
  • Server-side rendering (SSR): the server builds full HTML on each request. The crawler still gets complete content in the first response. Best for dynamic, per-user or frequently-changing pages.
  • Client-side rendering (CSR): the browser builds everything. Fine for logged-in app screens that should not be indexed anyway; risky for anything you want to rank.

The rule is simple: any page you want in Google should ship its main content in the initial HTML. SSR or SSG gets you there.

How to see what Google sees

Never judge JavaScript SEO from your own browser. Instead:

  • Disable JavaScript and reload the page. Whatever disappears is what the crawler risks missing.
  • Use URL Inspection in Google Search Console: it shows the rendered HTML Google actually stored, and flags if resources were blocked.
  • View source (not the inspector) to read the raw HTML your server sends. If your content is not in there, it depends on rendering.
  • Run a crawl to catch it at scale; this is one of the issues a full SEO crawl surfaces across every page at once.
Meeeters
Automate the SEO work that moves rankings
Content, links and audits in one place. Free plan, no credit card.
Start free

Other JavaScript SEO traps

  • JS-only internal links (onclick handlers instead of real <a href>): the crawler cannot follow them, orphaning pages.
  • Lazy content behind interaction: anything that loads only on scroll or click may never render for the bot.
  • Blocked JS or CSS files: if robots.txt blocks the scripts Google needs, it cannot render the page at all.
  • Slow bundles: heavy JavaScript delays rendering and drags down site speed, a ranking factor in its own right.

Single-page applications: the hardest case

SPAs push every problem above to the extreme, because content and routing run on JavaScript. A poorly configured SPA hands the crawler one blank shell for every URL. The fix is the same principle applied harder, prerender or server-render each route, and it has its own full guide: SEO for single-page applications.

Fix the content gap, then fill it

Getting JavaScript out of the way is step one; it makes your pages visible. Step two is having pages worth indexing. Once the crawler can actually read your site, the free SEO analysis shows which pages are missing and which are thin, and the SEO automation pipeline drafts the ones you need and publishes them to your CMS as drafts you approve. First make Google see the page, then give it something to rank.

Check what the crawler sees first

Run the free SEO analysis to find out whether JavaScript, thin content, or structure is keeping your pages out of the index, and get the fixes in priority order.

Frequently asked questions

Quick answers to the questions people ask most about this topic.

?
Can Google index JavaScript sites?

Yes. Google renders JavaScript and can index content that only appears after it runs. The catch is timing and reliability: rendering happens in a second wave that can lag, and any script error can leave content unrendered. JavaScript is indexable, but client-side-only content is a risk you do not need to take.

?
What is the difference between client-side and server-side rendering?

With client-side rendering (CSR), the server sends a near-empty page and the browser builds the content with JavaScript. With server-side rendering (SSR), the server sends fully-built HTML with the content already in it. For SEO, SSR (or static generation) is safer because the crawler gets your content in the first response, no rendering step required.

?
How do I know if JavaScript is hurting my SEO?

Use Google's URL Inspection tool in Search Console to see the rendered HTML Google stores, and disable JavaScript in your browser to see the raw page. If your main content, headings or links vanish when JS is off, or are missing from the rendered HTML, JavaScript is standing between your content and the index.

?
Do single-page applications rank on Google?

They can, but SPAs are the highest-risk pattern because everything, content and routing, depends on JavaScript. Without server-side rendering or prerendering, an SPA often serves the crawler one blank shell for every URL. See the dedicated guide on SEO for single-page applications for the full fix.

Christopher Fernandes, founder of Meeeters
Founder of Meeeters

I built Meeeters to make link building safe and simple: real, relevant backlinks with no reciprocal footprint and no black-hat shortcuts. Questions about your site? Write to me directly.

Email us
We reply fast, usually within a few hours.
Put this into practice
Free SEO analysis of your site, then earn your first verified backlink.
Get your free SEO analysis