Audit Notes
Perfect in the browser, invisible to Google: JavaScript SEO
Your site looks great when you open it. But if your content only appears after JavaScript runs, search engines and AI tools may see a much emptier page.
Home Audit Notes JavaScript SEO
Many modern websites are built with JavaScript frameworks such as React, Angular or Vue. When you open them in a browser, everything looks perfect. The trouble is that a search engine does not always see what you see.
What is going on
When a browser loads a page, it receives HTML from the server. On a traditional site, that HTML already contains the text, links and headings. On many JavaScript sites, the HTML is almost empty: a single container and a lot of script. The browser then runs the JavaScript, which fetches data and builds the page.
Google can run JavaScript, but it does it in a second step called rendering. Rendering takes more resources, can be delayed, and sometimes fails. Many other crawlers, including several AI crawlers, do not run JavaScript at all. They only read the raw HTML.
What can go missing
- Your main content. Product descriptions, service text or articles that load through JavaScript may never be indexed.
- Internal links. If menus or links are created with JavaScript click handlers instead of real
<a href>links, Google cannot follow them to find your other pages. - Title tags, meta descriptions and canonicals. If these are set by JavaScript, the raw HTML may show defaults or nothing at all.
- Structured data injected late may be missed or read inconsistently.
Signs you have a problem
- Pages that are “Discovered – currently not indexed” or “Crawled – currently not indexed” in Search Console.
- Google showing the wrong title or a generic description for many pages.
- Pages that rank for your brand name but nothing else.
- AI tools describing your business vaguely or not at all, while competitors are described clearly.
A typical example
A common pattern I see: a service page built as a single-page app. In the browser it shows a headline, three paragraphs of copy, a list of features and a contact form. In the raw HTML there is a title tag, a few script tags and one empty <div id="root"></div>. Every word of the copy arrives later through JavaScript.
Google may still index the text after rendering, but later and less reliably than on a page that sends it straight away. A crawler that does not render JavaScript sees a blank page and moves on.
Why this matters even more for AI search
AI answer tools need to read your text to quote it. If your pages are empty without JavaScript, you are invisible to the crawlers that skip rendering, no matter how good the content looks to a human visitor.
How to check this on your site
- Right-click your page and choose View page source (not Inspect). Search for a sentence from your main content. If it is not there, it is being added by JavaScript.
- In the same source view, check that
<title>, the meta description and the canonical tag are present and correct. - In Google Search Console, use URL Inspection on the page, then View crawled page and the HTML tab. That is what Google actually rendered.
- Temporarily turn off JavaScript in your browser (in Chrome, Site settings → JavaScript) and reload the page. What is left is roughly what non-rendering crawlers see.
- Check that your menus and links use real
<a href="/page/">links.
How to fix it
The most reliable fix is to send complete HTML from the server. Most frameworks support this:
- Server-side rendering (SSR): the server builds the full HTML for each request. Next.js, Nuxt and Angular Universal do this.
- Static site generation: pages are built as HTML ahead of time. Ideal for marketing pages and blogs.
- Hybrid: render the important content and meta tags on the server, and use JavaScript for interactive extras.
Avoid relying on “dynamic rendering”, where bots get a different version from users. Google now treats it as a workaround, not a long-term solution.
Whatever you choose, test again with View page source and URL Inspection after the change. The goal is simple: everything important should be in the raw HTML.
JavaScript rendering is one of the core checks in my technical SEO service. If you are not sure what Google sees on your site, I can check it for you.
Want me to check this on your site?
Send me your URL. I will review it in plain English within 48 hours and send you the top fixes. No obligation.