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
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.
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.
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.
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.
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.
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.
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.
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
Enter a URL
Paste any public URL. Your own site, a competitor's page, a client's staging environment - anything publicly accessible.
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.
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.
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.