Unrendered
A Chrome extension and an MCP server that compare a page's raw HTML with its rendered HTML, so you can see what AI crawlers that don't run JavaScript can read.
- Free
- Open source · AGPL-3.0
- No data collected
Do AI crawlers run JavaScript?
Vercel and MERJ measured AI crawler traffic in December 2024. The crawlers fetch pages at scale, and text that JavaScript adds is invisible to them.
- 0 of 5
- AI crawler vendors tested that run JavaScript
- OpenAI, Anthropic, Meta, ByteDance, Perplexity
- 569M
- GPTBot fetches in one month
- Vercel network, Dec 2024
- 23.84%
- Claude fetches of JavaScript it never runs
- Vercel and MERJ
What does a JavaScript-only page look like to them?
In this capture of the Duolingo homepage, 0% of the main content is in the raw HTML.
Every text block appears only after JavaScript runs, so a crawler that reads the raw HTML gets none of it.

What does the side panel show?
Click the icon on any page. Four tabs show the result.
Content
The share of the main content that is in the raw HTML, and every text block with its state. "Show on page" outlines each block in its state's colour.
- In raw HTML
- In the raw HTML.
- Partly
- Part is in the raw HTML, JavaScript adds or changes the rest.
- Repeated or moved
- In the raw HTML, at another position.
- Varies per request
- Only one of two raw responses had it.
- Only in JSON-LD
- Only inside JSON-LD structured data.
- Only in hydration data
- Only inside framework data, such as
__NEXT_DATA__. - Only in rendered HTML
- Appears only after JavaScript runs.

Fields
Title, meta description, canonical, hreflang, html lang, robots meta tags and JSON-LD, in the raw HTML and in the rendered HTML.
It warns when the raw HTML says noindex and JavaScript removes it. It also lists links that exist only in the rendered HTML.

Bots
For 22 AI bot tokens: what robots.txt allows, and how the site answers a request with each bot's user-agent (same page, different page, challenge page, blocked, rate-limited or redirected).
17 are tested. Googlebot and Applebot run JavaScript and are not imitated. Google-Extended and Applebot-Extended never fetch pages. Claude-SearchBot has no verified user-agent string yet.

Share
A 1200 × 630 image, a one-line summary and a Markdown report.
Download or copy the image, and copy the summary or the Markdown report.

How do you run it from Claude or Cursor?
The same analysis runs as an MCP server, so an assistant such as Claude or Cursor can check a page, or a list of URLs, for you.
It has two tools: analyze_page for the Content and Fields results, and check_ai_bots for the Bots result. Chrome runs on your machine, and the assistant gets the result, not the raw HTML. It needs Node 20 or later and Google Chrome.
Claude Code:
claude mcp add unrendered -- npx -y unrendered-mcp
Claude Desktop, Cursor and other MCP clients:
{
"mcpServers": {
"unrendered": {
"command": "npx",
"args": ["-y", "unrendered-mcp"]
}
}
}How does Unrendered measure a page?
- After the click, the extension waits until the page has made no DOM changes for 1 s, for at most 8 s. Then it splits the rendered page into text blocks.
- The same tab fetches the URL again: twice without cookies, as a crawler would, and once with your cookies.
- Each rendered block is matched, in order, against the blocks of the first raw response. The second raw response separates text that changes on every request. The response with cookies is used only to tell you when the raw HTML has more text with your cookies.
- Main content is the page's
<main>element. Without one, it is all text outside the header, navigation, sidebars, footer and dialogs. Hidden text is counted on its own and is not part of the percentages.
Text is compared as words, so symbols such as ⌘ are not counted.
What can Unrendered not tell you?
- Not a crawler
- Requests come from your browser and your IP. Sites that verify bots by IP may answer the real bot differently.
- No percentage when the raw HTML is not the page
- An error status, a challenge page from Cloudflare, AWS WAF or DataDome, or a redirect leaves nothing to compare.
- No iframes
- Text inside iframes is not included.
- 5 MB cap
- Raw HTML over 5 MB is cut at 5 MB.
- One width
- The page is measured at one width. The side panel narrows it, which can change what is hidden.
- Pages Chrome keeps closed
- Chrome does not let extensions read its own pages, the Chrome Web Store or PDFs.
Privacy
Nothing is sent to Mission Growth or anyone else. No analytics, no accounts, no storage. Read the privacy policy.
Frequently asked questions about Unrendered
Do AI crawlers run JavaScript?
Is Unrendered free?
Does it send my data anywhere?
Why do some pages get no percentage?
Which browsers does it support?
Want similar results in your business?
Start with a free audit. See where the lift is before you commit.
How it works
- 01
30-minute audit call
We map your funnel against your goal and pull live data from your channels.
- 02
Lift estimate
You get a written estimate of where the lift is, with a 30-day plan to capture it.
- 03
You decide
Run it with us, run it in-house, or shelve it. No commitment from the audit.