Free JavaScript SEO checker

See how much of any page Google and AI bots can read without JavaScript, and which AI crawlers are allowed. Free, instant, no login.

3 free checks per day.

What you get

  • Whether your main content lives in the raw HTML or only appears after JavaScript
  • The raw-HTML vs rendered word delta (what non-JS crawlers miss)
  • Which AI bots (GPTBot, PerplexityBot, ClaudeBot, Google-Extended) are allowed to crawl it
  • Why it matters: most AI crawlers run little or no JavaScript, so JS-only content is invisible

Sample result. Run a check on your own URL above.

Example
yourblog.com/best-running-shoes-2025

Content visible without JavaScript

1,840words in the raw HTML

Scripts are ≈ 22% of the page bytes.

Likely AI-readable
Most AI crawlers (GPTBot, ClaudeBot, PerplexityBot) execute little or no JavaScript, so anything that only appears after JS is invisible to them and can't be cited. Server-render or pre-render your main content so it ships in the initial HTML.
AI crawler access
GPTBot
OpenAI
Allowed
OAI-SearchBot
OpenAI (ChatGPT Search)
Allowed
PerplexityBot
Perplexity
Blocked
ClaudeBot
Anthropic
Allowed
Google-Extended
Google (Gemini)
Allowed
Bingbot
Microsoft (Copilot)
Allowed

What is a JavaScript SEO checker?

A JavaScript SEO checker answers one simple question.

Can search engines and AI bots see the content your JavaScript builds?

Many modern sites load their text, images, and links with JavaScript after the first page arrives. In a browser, that looks fine. To a bot that does not run JavaScript, the same page can look almost empty.

A JavaScript SEO checker fetches your page the way a crawler does, then tells you how much of your real content actually made it into the HTML. It turns a hidden, technical problem into a single number you can act on.

This matters more than ever.

Google can run JavaScript, but slowly and not always. Most AI bots do not run it at all. If your words depend on JavaScript, you can lose both Google rankings and a spot in AI answers.

Client-side render, what a non-JS bot sees
HTML
<body>
  <div id="root"></div>
  <script src="/app.js"></script>
</body>
Server-side render, what a non-JS bot sees
HTML
<body>
  <h1>Best Running Shoes 2025</h1>
  <p>We tested 40 pairs over 600 miles...</p>
</body>
Same page, two render methods. Only the right one hands a bot real words to read.

How search engines and AI bots handle JavaScript

Not every bot treats JavaScript the same way.

Google can render it, but in a second pass that takes more time and is not guaranteed. Bing renders some pages. The AI bots behind ChatGPT, Perplexity, and Claude usually skip JavaScript and read only the raw HTML.

BotRuns JavaScript?What that means
GooglebotYes, second passCan index JS content, but slower and not guaranteed
BingbotSometimesRenders some pages, not all of them
GPTBot (ChatGPT)NoReads the raw HTML only
OAI-SearchBotNoReads the raw HTML only
PerplexityBotNoReads the raw HTML only
ClaudeBotNoReads the raw HTML only

You can read more in Google's JavaScript SEO guide, plus the bot docs from OpenAI, Perplexity, and Anthropic.

What this JavaScript SEO checker measures

Raw HTML vs rendered words

Our checker fetches your page two ways. It reads the raw HTML first, then the fully rendered version. Then it compares the word counts.

A small gap is fine. A big gap means most of your content needs JavaScript, so non-JS bots miss it.

Raw HTML (what non-JS bots read)1,180 words
After JavaScript (what your browser shows)2,360 words
Here, half the page only appears after JavaScript runs. A bot that skips JavaScript sees the short red bar, not the full page.

Check it yourself in one line

You do not need a tool to get a feel for this. Fetch the raw HTML with curl and search it for a sentence you can see in your browser. If grep finds nothing, that text is added by JavaScript.

Terminal
# Does your headline exist in the raw HTML?
curl -s https://example.com/your-page | grep "Best Running Shoes"

# Count the words a non-JS bot would see
curl -s https://example.com/your-page | sed 's/<[^>]*>//g' | wc -w

Our checker does the same thing, then renders the page in a real browser to measure the exact gap for you.

Which AI bots are allowed

We also read your robots.txt and show which AI crawlers are allowed or blocked. A page that depends on JavaScript and also blocks AI bots is invisible twice over.

What commonly hides behind JavaScript

When content is JavaScript-dependent, it is usually one of these:

  • Main article text loaded by a framework like React or Vue
  • Product lists, prices, and reviews fetched after the page loads
  • Tabs and accordions that only fill in when you click them
  • Comments and related posts pulled in by another script
  • Links added by JavaScript that are not in the raw HTML

The pattern is always the same. The page looks complete in your browser, because your browser ran the JavaScript. The crawler never did, so it walked away with a fraction of the page. A checker is the only fast way to spot the gap, since you cannot see it with your own eyes.

Rendering methods compared

The way your site builds pages decides what bots see. Here are the main options.

MethodHow it worksWhat crawlers getGood for
Client-side (CSR)The browser builds the page with JavaScriptOften an empty shell at firstApps behind a login
Server-side (SSR)The server builds the HTML for each visitFull content right awayPages that change a lot
Static (SSG)Pages are built ahead of timeFull content, very fastBlogs, docs, landing pages
Hybrid (ISR)Static pages refreshed in the backgroundFull, fresh contentBig content sites

For SEO and AI visibility, server-side rendering and static generation are the safe picks. The web.dev guide to rendering on the web is a good, deeper read.

You do not have to rebuild your whole site to win here. Even a few key pages, your money pages and your best articles, moved to server-side rendering can change whether AI engines cite you. Start with the pages a checker flags as the worst, then work down the list.

How to fix a JavaScript-dependent page

The goal is simple. A bot that never runs JavaScript should still see your full text.

  1. Move your main content to server-side rendering or static generation.
  2. Make sure your headings, body text, and links are in the raw HTML.
  3. Pre-render pages for bots if you must keep a client-side app.
  4. Avoid hiding key text behind clicks, tabs, or a "load more" button.
  5. Re-test the page and watch the raw-versus-rendered gap shrink.

Frameworks like Next.js, Nuxt, and Astro do most of this work for you. They render your pages on the server or at build time, so the HTML a crawler reads already holds your words. If you are stuck on a single-page app you cannot rewrite yet, a pre-render layer that serves a fully built HTML snapshot to bots is a solid bridge.

What a crawler-friendly page looks like

  • Your text and headings show up in "View source"
  • Internal links are real <a href> tags in the HTML
  • The page still reads fine with JavaScript turned off
  • AI bots are allowed in your robots.txt

How often should you run a JavaScript SEO check?

Rendering problems creep in quietly. A theme update, a new plugin, or a switch to a fresh framework can move your content behind JavaScript without changing how the page looks in your browser.

Run a check any time you ship a new template, change your stack, or notice a page slipping in search or going missing from AI answers. For a stable site, a monthly check on your top pages is a healthy habit that catches regressions before they cost you traffic.

Frequently asked questions

What is JavaScript SEO?
JavaScript SEO is the work of making sure search engines and AI bots can see content that is built with JavaScript. Modern sites often load their text, links, and images with JavaScript after the page first arrives. If a crawler does not run that JavaScript, it sees an almost empty page. JavaScript SEO is about getting your real content into the HTML that crawlers read.
Does Google read JavaScript?
Yes, but with a catch. Googlebot can render JavaScript, but it does this in a second pass that can take longer and sometimes gets skipped or limited. So JavaScript content can be indexed slower, or missed if rendering fails. Putting your main content in the raw HTML is the safe path. Google says the same in its own JavaScript SEO guide.
Do AI crawlers like GPTBot and PerplexityBot run JavaScript?
Mostly no. The bots used by ChatGPT, Perplexity, and Claude grab the raw HTML and do not run JavaScript the way a browser does. That means any text that only shows up after JavaScript loads is invisible to them, so they cannot quote it. This is why a page can rank on Google yet never appear in AI answers.
How do I check if my content needs JavaScript?
Run your URL through this free checker. It fetches the raw HTML, counts the words, and compares that to the fully rendered page. If most of your words only show up after JavaScript, the tool flags the page as JavaScript-dependent. You can also test by viewing the page source or turning JavaScript off in your browser.
What is the difference between CSR, SSR, and SSG?
CSR (client-side rendering) builds the page in the browser with JavaScript, so bots often see an empty shell. SSR (server-side rendering) builds the HTML on the server for each request, so the content is there right away. SSG (static site generation) builds the HTML ahead of time, which is both fast and crawler-friendly. For SEO and AI visibility, SSR and SSG are the safe choices.
How do I fix a JavaScript-dependent page?
Move your main content into the HTML that ships first. The common fixes are server-side rendering, static generation, or pre-rendering for bots. Frameworks like Next.js, Nuxt, and Astro make this easy. The goal is simple: a crawler that never runs JavaScript should still see your full text, headings, and links.
Is the free JavaScript SEO check accurate?
The free check is a fast heuristic. It reads the raw HTML, measures how much of the page depends on scripts, and checks which AI bots are allowed. A free account unlocks the full render diff, where we load the page in a real headless browser and measure the exact raw-versus-rendered word gap.