JavaScript SEO

JavaScript SEO is how search engines handle pages built or filled by JavaScript. If your content or links arrive only after scripts run, crawlers may miss them. This page shows what to fix and how to check it in minutes.

By , founder of Porteur · Updated 14 September 2026 · Markdown

What JavaScript SEO means for a small site

JavaScript SEO covers how search engines handle pages built or filled by JavaScript. For a small site, it decides if your /pricing, /blog/how-it-works and /guides/getting-started get indexed, or sit unseen.

Googlebot renders pages with an evergreen Chromium in a second wave. Content that only exists after rendering may be indexed later, and when rendering fails, not at all. Bing renders some JavaScript. Most AI crawlers, such as OAI-SearchBot, PerplexityBot and ClaudeBot, do not execute it, so script-only text is invisible to them as of 2026.

How Googlebot renders your pages

Google first crawls HTML, then queues the page to render. If the HTML already contains your product name, price, and copy, indexing is quick. If those arrive by script, indexing waits for the render queue and may fail if scripts block or error.

  1. Pick a key URL

    Choose a template that matters for search, for example /features, /blog/your-post or a category page.

  2. Use Search Console’s URL Inspection tool

    Enter the URL and view “HTML after JavaScript”. This is the rendered HTML Google saw.

  3. Check the critical bits exist in HTML

    Look for the H1, body copy, product names, prices and internal links. If they are missing, fix your rendering path.

  4. Fetch a fresh crawl

    If you ship a fix, request indexing once. Then monitor the Performance report for impressions on queries like “yourproduct pricing” or your post title.

What breaks JavaScript SEO

  • Links that are not anchors. Links must be <a> elements with an href. Click handlers, buttons or divs are not crawled as links.
  • Content behind clicks, scroll events or hash fragments. Googlebot does not trigger your “Load more” or read #tabs. Put the text in the HTML or provide real paginated URLs.
  • Client side rendering only. A blank HTML shell relies on the render queue and can fail. Hydration without HTML content has the same risk.
  • Blocked assets. If your scripts or APIs are blocked by robots.txt, Googlebot cannot render the page state.
  • Race conditions. Data fetched after render or on user interaction never reaches the rendered HTML snapshot.

A fixed /pricing page returns HTML with the plan names and prices, and its “Start trial” and “Compare plans” links are <a href="/signup"> and <a href="/pricing#compare"> plus a real compare page at /pricing/compare.

Framework choices that help

Server side rendering, static generation and hydration are the answers frameworks give. The goal is the same: ship HTML with the content, then enhance it with JavaScript.

ApproachWhen to chooseWhat to check
Static generationMarketing pages, docs, blogHTML includes copy and links, rebuild on publish
Server side renderingPersonalised or frequently updated pagesFast TTFB and complete HTML on first response
Client side onlyPrototypes or app-only areas after loginUse noindex or accept weak SEO reach

Whatever you use, ensure internal navigation is real anchors with href to clean URLs, for example <a href="/guides/getting-started"> rather than a button with onClick. For infinite lists, use paginated URLs like /blog?page=2 and link to them.

How to measure and iterate

  • Rendered HTML parity: for each template, diff server HTML against the post-render DOM. Aim for the copy and links to match.
  • Indexation: in Search Console, watch “Crawled, currently not indexed” and “Discovered, currently not indexed” for JS-heavy templates.
  • Query coverage: in the Performance report, check impressions for exact titles, for example quotes around “How to use yourproduct”. No impressions means Google did not see the text.
  • AI visibility: sample key pages with an AI crawler that does not execute JS. If it returns an empty body, your script-only text is invisible to them.

Questions

Sources

Check my site, free

Paste your homepage URL to see if your public pages ship their copy and links in HTML, and which rivals already rank on those searches, in about thirty seconds.

  • Free check, no card
  • Read-only, your own accounts
  • Readable by your agent

Read next