Your content is online, so it’s findable. Right? On sites that lean heavily on JavaScript, that’s often not the case. There’s usually a gap between what you see in your CMS and what Google and AI actually see. JavaScript SEO is about exactly that gap: making sure a site built with JavaScript stays findable, crawlable and indexable. In this article we show you where it goes wrong, how to test it yourself and how to fix it, for both Google and the new generation of AI search engines.
What is JavaScript SEO?
JavaScript SEO is the part of technical SEO that makes sure websites running on JavaScript can be crawled, rendered and indexed properly. Many modern sites build their pages in the browser with JavaScript: think single-page applications, dynamic filters, or content loaded from an external source. For a visitor that works fine. For a search engine or AI model, the question is whether it gets to see that content at all.
How Google crawls and renders JavaScript
Google can process JavaScript, but not in one go and not for free. The process runs in two steps, as Google describes in its own documentation on JavaScript SEO . Googlebot first crawls the raw HTML. Then, in a second pass, the page is rendered to run the JavaScript. That second pass doesn’t always happen right away: the page can sit in the queue for a few seconds, but under heavy load for days. If your most important content lives only in that rendered version, you depend on whether and when Google runs that render. On large or slow sites that sometimes means content is picked up late, or not at all.
The visibility gap: your CMS versus the crawler
In your CMS everything looks complete. Pages, products, vacancies: they’re all neatly there. But a search engine or AI model doesn’t see your back end, it sees the HTML your site returns. If important content only loads via JavaScript, through an external connection or via an embedded widget, the crawler may pick up none of it.
We see it in our audits more often than you’d think. At one organisation with a large catalogue, dozens of pages sat neatly in the back end, but were loaded through an external feed (an ATS or XML connection). In the raw HTML that Google and AI fetched, not one of them could be found. The content existed, but not for the people looking for it. You’re then paying for content nobody can find.

Why you don’t see it yourself
The tricky part: in your own browser everything works. You’re logged in, your JavaScript runs, the feed loads nicely. But a search engine or AI model arrives anonymously, renders only partially and doesn’t wait for slow or external scripts. What’s obviously visible to you is an empty page to them. Common culprits: content that only appears via JavaScript, embedded iframes and feeds, infinite scroll, and information that only shows up after a click.
You want the search engine to take you seriously. Give it mixed signals and it drops off.
Giacomo Perticara, founder and SEO strategist at GRP Digital
AI makes the gap bigger, not smaller
Many people think AI is smarter and therefore sees through this kind of thing better. The opposite is true. According to research by Vercel , the crawlers of ChatGPT and Claude do fetch JavaScript files but don’t execute them. They read only the raw HTML. The consequence is sharp: a page can rank number one in Google and at the same time be virtually invisible to AI search engines. And AI answers are exactly where you want to be mentioned, because that’s increasingly the moment people make their choice. Steer by classic SEO alone and you miss that new layer.
A technical SEO audit is like a vehicle’s annual inspection: you do it every year, even when nothing is broken.
Giacomo Perticara, founder and SEO strategist at GRP Digital
How to test what Google and AI really see
You don’t have to guess. This is exactly what we check first in our audits, and you can do it yourself in a few minutes:
- View the page source (Ctrl+U or Cmd+U): is your important text literally in the HTML, or is it largely empty?
- Turn off JavaScript in your browser (via the developer tools) and reload the page. What’s left, is that what you want to rank?
- Use the URL inspection in Google Search Console and look at the rendered HTML Google actually fetches.
- Search for a literal sentence from your page in Google, in quotation marks. No result? Then that text probably isn’t indexed.
How to close the visibility gap
- Serve important content in the HTML from the start, with server-side rendering (SSR) or static generation (SSG), instead of only via JavaScript.
- Have external feeds and embeds (ATS, vacancies, product data) render server-side, or mirror them to your own indexable pages.
- Give every important entity (vacancy, product, service) its own indexable URL with structured data.
- Don’t block your JavaScript and CSS files in robots.txt; the crawler needs them to render correctly.
- Monitor it structurally: keep an eye on the coverage reports in Search Console and run a render check periodically.
Is JavaScript bad for SEO?
No. JavaScript is essential for modern websites and doesn’t have to get in the way of SEO. It only goes wrong when important content is built entirely through JavaScript without search engines being able to render it. Done well, with server-side rendering and indexable URLs, a JavaScript site can rank just fine, for Google and for AI.
We don’t build pages, we build logic.
Giacomo Perticara, founder and SEO strategist at GRP Digital
Visibility is not an assumption
The cheapest growth often sits in content you already have, but that nobody can see. Before you invest in more content or more ads: first check that what’s there is actually visible to people, Google and AI. Visibility is not an assumption, it’s something you test.
Want to know what search engines and AI really see of your site? At GRP Digital we map the visibility gap and close it.



