Definition
JavaScript SEO is the work of making sure pages that rely on JavaScript can still be crawled, rendered and indexed. Google handles a JavaScript page in three phases, crawling, rendering and indexing, and the gap between the first two is where content goes missing.
Example. A menu item built as <span onclick="go('/pricing')"> works for a visitor and is invisible to Google. Written as <a href="/pricing">, the same link gets found.
You can see what a crawler that does not run JavaScript gets from any page with the free Can AI See Your Page? checker.
How does Google process a JavaScript page?
Google processes a JavaScript page in three phases: crawling, rendering and indexing. It fetches the URL, then queues the page until its resources allow a headless Chromium to run the JavaScript, then indexes the rendered HTML. Google says a page may sit in that render queue for a few seconds, and that it can take longer.
Googlebot runs an evergreen version of Chromium, so modern JavaScript is not the problem it once was. The problem is everything that depends on rendering finishing, and on the crawler being able to reach what was rendered.
What breaks JavaScript SEO most often?
The breaks that come up most are links Google cannot follow, rules it reads too early, and URLs it cannot tell apart. Each one comes straight from Google's own JavaScript documentation.
| Mistake | What Google says |
|---|---|
Links without <a href> | Google can only discover links that are <a> elements with an href attribute |
noindex in the original HTML | Google may skip rendering when it sees noindex, so JavaScript that removes it later is never run |
Content loaded by # fragments | Do not use fragments to load different page content |
| Error pages that return 200 | Client-side routing produces soft 404s. Redirect to a URL that returns 404, or add noindex to the error view |
Does every crawler run JavaScript?
Not every crawler runs JavaScript. Google states that not all bots can run JavaScript, which is why it still calls server-side rendering or pre-rendering a great idea. Content that only exists after rendering is content some readers of your page never receive.
That matters more now that AI crawlers are reading the web as well as Google. If your headings, body copy and links are in the raw HTML, every crawler gets them. If they arrive only through JavaScript, you are relying on every crawler to render the page.
Sources
Last checked against these sources on 19 October 2026.