MON - FRI : 09:00 AM-18:00 PM
ENGEN

JavaScript SEO

November 05, 2026
0 views

JavaScript SEO is the part of technical SEO that makes sure Google and AI crawlers can read the content of a website built with JavaScript. The core rule: text, links and product information should already be in the HTML the server returns, not appear only after the browser runs JavaScript.

What is JavaScript SEO: three ways to render a page

How a site renders its pages decides what a bot receives on the first request.

Rendering Content in the initial HTML? Common on
Client-side rendering (CSR, built in the browser) Usually an empty shell React or Vue single-page apps
Server-side rendering (SSR, built on the server) Yes WordPress, Shopify themes, Next.js, Nuxt
Static rendering (built ahead of time) Yes Blogs, landing pages that rarely change

With CSR, the page source often looks like this, while product names, prices and descriptions are injected later by main.js:

<body>
  <div id="root"></div>
  <script src="/static/js/main.js"></script>
</body>

How Google processes JavaScript pages

Google works in three phases: crawling, rendering and indexing. Pages that return a 200 status go into a render queue; when resources allow, a headless Chromium runs the JavaScript and Google indexes the rendered HTML. Google still recommends server-side rendering or pre-rendering because it makes pages faster and not all bots can run JavaScript (Google Search Central, Understand JavaScript SEO basics, accessed November 2026). Googlebot crawls with a smartphone agent, so the content must be complete on mobile (see mobile-first indexing).

JavaScript SEO and AI search

According to an analysis by Vercel and MERJ, major AI crawlers such as GPTBot (OpenAI), ClaudeBot (Anthropic) and PerplexityBot did not render JavaScript at the time of the study. They read only the HTML they download. Gemini uses Googlebot’s infrastructure, so it can render (Vercel, The rise of the AI crawler, December 2024, accessed November 2026). Crawlers may change, but content that is already in the HTML can be read by any of them.

Hypothetical example: a category page lists 40 products at about 30 words each, 1,200 words in total. The list appears only after JavaScript calls an API. A bot that does not run JavaScript sees only the menu and footer, about 60 words, or 5% of the content. ChatGPT has no product data from this page to cite.

Adtek’s AIO checker also reads the HTML without running JavaScript. Its “Content available without JavaScript” check (2 points) fails when the HTML is longer than 5,000 characters but the readable text, after removing scripts and styles, is under 80 words.

How to fix content that needs JavaScript

  1. Find what lives in JavaScript. In Chrome, press Ctrl+U to view the page source and search for a sentence from the main content. Then right-click, choose Inspect and search again. A sentence that shows up in Inspect but not in the source was injected by JavaScript.
  2. WordPress. Posts and pages are built on the server, and most page builders also output HTML. Trouble spots are sliders, tabs, filters or “related products” blocks loaded via AJAX. Put service descriptions, pricing and FAQs in regular text blocks.
  3. Shopify. Shopify recommends rendering initial content with Liquid and HTML. App review widgets or third-party search may still load through JavaScript, so check them with step 1 (Shopify Dev, Render essential content in Liquid and HTML, accessed November 2026).
  4. Custom-built sites. Move pages that need SEO to a framework with SSR or static rendering. In the Next.js App Router, layouts and pages are Server Components by default; add 'use client' only to interactive parts (Next.js Docs, Server and Client Components, accessed November 2026). Nuxt uses universal rendering by default; do not set ssr: false on content pages, and prerender pages that rarely change (Nuxt Docs, Rendering Modes, accessed November 2026):
    export default defineNuxtConfig({
      routeRules: { '/gioi-thieu': { prerender: true } }
    })
  5. If you cannot change the code yet. A prerender service that serves pre-built HTML to bots is dynamic rendering. Google calls it a workaround, not a recommended long-term solution (Google Search Central, Dynamic rendering as a workaround, accessed November 2026), so treat it as a stopgap.
  6. Check again. In Google Search Console, paste the URL into URL Inspection and click View crawled page to see the HTML Google fetched, or click Test live URL, View tested page and the Screenshot tab to see the rendered page (Search Console Help, URL Inspection tool, accessed November 2026). Then run the AIO checker again.

Frequently asked questions

Google can render JavaScript, so do I still need SSR?

Yes, ideally. JavaScript pages wait in a render queue, and Google still recommends server-side rendering. AI crawlers that do not run JavaScript see only the initial HTML.

Does passing this check get me into AI Overviews?

There is no guarantee. Content in the HTML only lets bots read the page. Whether AI Overviews or ChatGPT cite it depends on content quality and other factors; see what is AI optimization (AIO).

If you need a review of how your site renders for Google and AI search, see Adtek’s SEO solution.