Free JavaScript SEO Tool.
See What Crawlers Actually See.

JsBug is a free JavaScript SEO tool. Enter any URL — JsBug fetches the raw HTML and renders it with headless Chromium — then shows you every difference. Changed content, missing links, altered metadata, blocked resources, console errors. All in one view. No login. No installation.

Compare Side-by-Side

Raw HTML on the left, JavaScript-rendered DOM on the right. Differences highlighted.

Catch SEO Issues

Missing titles, rewritten canonicals, dropped meta tags - surfaced instantly.

Track Every Change

Every link, heading, and element that JavaScript adds or removes - tracked and diffed.

JS Load Time

Measure JavaScript execution time, First Contentful Paint, and total request completion so you can see how rendering speed affects crawlability.

Free & open source . Built for the community.

JavaScript Hides Content.
From Google. From AI. From You.

Googlebot renders pages in two waves

Googlebot fetches raw HTML on the first pass. JavaScript rendering happens later - hours later, sometimes weeks later - in a separate crawl queue. Pages that depend on JavaScript for their content sit in that queue. Low-priority pages often never make it through.

AI crawlers skip JavaScript entirely

GPTBot, ClaudeBot, PerplexityBot, and AppleBot do not execute JavaScript. They read raw HTML and nothing else. If your content loads through a JavaScript framework, these bots see an empty page. That content does not appear in ChatGPT answers, Perplexity results, or any AI-generated citation.

Your current tools show you the wrong version

Open Chrome DevTools - you see a fully rendered page. Click View Source - you see raw HTML. Neither one shows you the difference between the two. That difference is exactly what determines whether Googlebot and AI bots index your content. JsBug shows you that gap.

What JsBug Analyzes

01

Side-by-side HTML Diff

Raw HTML on one side, rendered DOM on the other. Every difference is highlighted - added nodes, removed elements, changed attributes. Line by line.

02

SEO Element Diff

Title tags, meta descriptions, canonical URLs, H1 headings, robots directives, hreflang attributes - compared before and after JavaScript execution. You see exactly which SEO elements JavaScript changes.

03

Console Log and Error Capture

JavaScript errors, warnings, and log messages from the render cycle - captured automatically. Silent console errors break rendering on thousands of pages without anyone noticing. JsBug surfaces them.

04

Network Request Log

Every HTTP request that fires during JavaScript execution: the URL, method, status code, resource type, and timing. You see which third-party scripts load, which resources get blocked, and what slows down rendering.

05

Internal Link Comparison

How many internal links exist in raw HTML? How many appear only after JavaScript runs? JsBug counts both and shows the diff. Links that only exist post-render are invisible to Googlebot's first crawl and to every AI bot.

06

Multi-User-Agent Testing

Render the same page as Googlebot Desktop, Googlebot Mobile, Bingbot, GPTBot, ClaudeBot, or Chrome. Different bots get different responses - JsBug shows you exactly what each one receives.

07

Screenshot Comparison

Visual screenshots of the page with and without JavaScript, side by side. Layout shifts, missing images, blank sections - visible at a glance before you read a single line of HTML.

08

Structured Data Detection

Does your JSON-LD schema exist in the raw HTML, or does JavaScript inject it after page load? Same question for Open Graph tags and other structured data. JsBug checks both versions and shows you the answer.

How JsBug Works

1

Enter a URL

Paste any public URL. Your own site, a competitor's page, a client's staging environment - anything publicly accessible.

2

JsBug fetches it twice

One request with JavaScript disabled - plain HTTP, raw HTML, exactly what Googlebot sees on its first crawl pass. One request through headless Chromium - full JavaScript execution, the rendered DOM that browsers display. Both happen at the same time.

3

Read the diff

HTML differences are highlighted. SEO elements are compared. Network requests are listed with timing. Console errors are captured. Everything appears in a single view - no switching tabs, no manual inspection.

No login. No browser extension. No installation. Works on any URL.

Common Problems JsBug Solves

My title tag shows in DevTools but not in Google Search Console

JavaScript is setting your title after page load. Googlebot's first crawl pass reads the raw HTML - and finds an empty or placeholder <title>. JsBug's SEO element diff puts both versions side by side: the raw HTML title on the left, the JavaScript-rendered title on the right. The mismatch is obvious.

Google isn't indexing my React pages

A client-side rendered React app sends <div id="root"></div> to Googlebot on the first request. No content, no links, no headings - just an empty container. JsBug loads the page both ways and shows you exactly what Googlebot receives. If the raw HTML is empty, you know why indexing fails. Console errors that prevent rendering are captured too.

My internal links aren't being crawled

React Router, Vue Router, and client-side navigation inject <a> tags after JavaScript executes. Those links do not exist in raw HTML. Googlebot's first pass never sees them. JsBug's link diff counts the links in both versions and lists every one that only appears post-render.

I want to check what GPTBot and AI crawlers see

GPTBot, ClaudeBot, PerplexityBot, and AppleBot fetch raw HTML. They do not run JavaScript. JsBug's raw HTML view shows you the exact page these bots receive. If your content depends on JavaScript, it does not exist in AI search results.

Frequently Asked Questions

JsBug is a free JavaScript rendering debugger. It loads any URL twice - once with JavaScript disabled (raw HTML) and once through headless Chromium (fully rendered DOM) - and shows you every difference: changed HTML, altered SEO elements, network requests, and console errors.
Chrome DevTools shows you one version of the page at a time. To compare raw HTML against rendered output, you have to open multiple tabs, inspect elements manually, and repeat the process for every page. JsBug automates that entire comparison in a single step. You paste a URL, and both versions appear side by side with differences highlighted.
Googlebot Desktop, Googlebot Mobile, Bingbot, GPTBot, ClaudeBot, Chrome, and Chrome Mobile. You switch between them to see how each bot receives your page - useful for detecting cloaking, testing mobile rendering, and checking AI crawler visibility.
No. GPTBot (OpenAI), ClaudeBot (Anthropic), PerplexityBot, and AppleBot do not execute JavaScript. They fetch raw HTML only. Content that depends on JavaScript does not appear in ChatGPT answers, Claude responses, Perplexity results, or Apple Intelligence summaries. JsBug's raw HTML view shows you the exact page these bots receive.
Yes. JsBug is free for any public URL. No account registration, no login, no software installation. Open the page, paste a URL, and run the analysis.
JsBug requires a publicly accessible URL. It fetches the page from its own servers, so localhost and private network addresses do not work. For local development, use Chrome DevTools or a tunneling service like ngrok to expose your local server.