apprun.icuAI tools

Crawler view · browser-only

AI crawler HTML inspector: see what a non-rendering fetch gets

Paste the HTML of a page to see what a fetch without JavaScript gets: the visible text, the main content an extractor keeps, heading chunks with citation anchors, and a rule-based audit. The analysis runs in your browser.

In this tab the tool parses your HTML in your browserNo request the tool's code makes none with your HTMLRule-based every verdict shows its reason

Paste a page's HTML

The analysis runs in this tab, and the tool makes no request with your HTML. The site-wide promo banner is separate code and never reads the text box.

Page HTML

0 characters · limit 1,500,000
Copy the page source from your browser's View page source command, not the DevTools outerHTML. The page source is close to what a fetch without JavaScript receives; DevTools shows the page after scripts have changed it.
Chunk size, in estimated tokens

How to use AI Crawler HTML Inspector

  1. Copy the page source. In your browser, choose View page source from the menu, select all, and copy. The text is close to what a fetch without JavaScript receives.
  2. Paste it and set the Page URL. The URL is used only to build citation links. The tool does not request it.
  3. Choose a chunk size and press Inspect HTML. 150, 300 or 500 estimated tokens. Load one of the two samples first if you want to see the tool work.
  4. Read the Overview, then the Audit. The failing and warning checks come first, ranked by status. Every row on the Audit tab states its reason.
  5. Export what you need. Download the Markdown audit, the JSON chunks, or the plain text.

What the inspector measures

The inspector reads the HTML of one page and reports what a fetch without JavaScript receives, and how the tool splits the text it keeps into chunks. It has six views: Overview, Main content, Chunks, Summaries, Audit and Plain text. All six come from one analysis, so the numbers agree from tab to tab.

Use the page source, not the DevTools copy. In your browser, choose View page source from the menu, select all and copy. That text is close to what a fetch without JavaScript receives. The same URL can return different HTML to different clients, so the copy is a sample, not a guarantee. DevTools shows the page after scripts have changed it, so it can include content that a non-rendering reader never saw. Google's own guidance is that "not all bots can run JavaScript," and that Googlebot queues pages for rendering (Google Search Central, JavaScript SEO basics).

The render-gap verdict

The render gap counts four things in the HTML you pasted: visible characters, bytes of inline script (JSON data blocks are counted separately), external script tags, and empty app roots such as #root. Visible characters are text outside script, style, noscript, template and head elements, and outside elements marked hidden. Navigation, footer and cookie wording count as visible text, because a text-only reader sees them too. The verdict uses one threshold: 300 visible characters.

VerdictRule
Content present in HTML300 or more visible characters.
Mostly empty before JavaScriptUnder 300 characters, and the page has scripts other than JSON data, or an empty app root such as #root.
Little text in HTMLUnder 300 characters, and no scripts other than JSON data.

In December 2024 Vercel, with MERJ data, reported that none of the major AI crawlers it measured currently render JavaScript, and that the ChatGPT and Claude crawlers fetched JavaScript files without executing them. The primary data came from monitoring nextjs.org and the Vercel network over a few months. To check the findings across technology stacks, the post also analysed two job-board sites. The same post says AppleBot renders JavaScript through a browser-based crawler, so the statement covers the AI crawlers the post lists, not every bot. Read it as a dated measurement, not a current guarantee (Vercel, "The rise of the AI crawler").

How the main content is picked

A reader mode keeps the article and drops the rest of the page. This tool does the same job with a scoring pass over article, main, section and div containers. The highest score wins, and the blocks inside it become the text that gets chunked.

SignalHow it counts
Text lengthVisible characters under the container, not counting removed parts.
ParagraphsEach paragraph of 25 characters or more adds 100 to the length score.
Link densityThe score is multiplied by one minus the share of text that is link text.
Tagarticle counts 1.5 times, main or role="main" 1.4 times, section and div once.
Id or class wordsA word such as article, content, main, post, entry, text or story gives 1.2 times.
Removed before scoringnav, header, footer, aside, form, button, select, svg and dialog elements; script, style, noscript, template, iframe, object and embed; hidden elements; navigation, banner, contentinfo, complementary, search, dialog and alertdialog roles; id or class words such as cookie, consent, sidebar, comment, share, related, ad, promo, newsletter and paywall, unless a content word is also present.

The rules follow the approach of Mozilla's Readability, which scores candidate blocks by tag and class weights, penalises link-heavy blocks, and drops nodes that match an "unlikely candidate" pattern (Mozilla Readability repository). This tool is its own implementation, not that library, and it will make mistakes on unusual markup. The Main content tab lists every removal rule that matched, with its element count and visible characters, largest first. Script, style and head elements are not listed. If extraction drops the page's first h1, for example from inside a header, the tool adds that heading back as the first block, so the title still appears in the heading paths. If no container scores, the whole body is used and the tab says so.

What each audit rule checks

The audit has 23 rules. Each one ends in pass, warn or fail, with a reason that quotes the number or the element it found. Failing and warning rules also carry a suggested fix. A rule that passes shows no fix. The list below groups the rules by the question they answer.

QuestionRules
Is the text in the HTML?Text in the initial HTML; main content can be isolated; visible text share of the HTML (10% is this tool's own rule of thumb).
Is the page identified?One h1 heading; title length; meta description length; language declared; canonical link.
Do robots directives restrict indexing or snippets?Robots meta. noindex and none fail as blocking directives; nosnippet and max-snippet:0 fail as snippet restrictions; a numeric max-snippet limit and data-nosnippet warn.
Is the structured data readable?JSON-LD that does not parse fails, and a page with none passes with nothing to parse; FAQPage markup (warned, with Google's dated note); author and date present.
Can a passage be cited on its own?Answer-first opening (the first paragraph of 8 words or more after the h1, 60 words or fewer, sharing key terms with it; the 60-word limit is a tool heuristic); heading levels do not skip; headings carry ids; no paragraph over 1,200 characters; no consent wording at the top; no paywall markers; answers not in hidden tab panels.
Is the evidence visible?Images have alt text; figures and tables have captions; outbound links to sources; ids are unique.

The outbound-link rule has a reason behind it. In the GEO paper, adding citations, quotations and statistics raised the authors' visibility metric on their benchmark, where answers came from gpt-3.5-turbo (Aggarwal et al., arXiv:2311.09735). The paper also reports one experiment on Perplexity.ai, with gains of up to 37% in its introduction. Neither result shows the same effect in live AI search, so the rule checks only that links exist. The FAQPage warning follows Google's changelog, which says the FAQ rich result "will no longer appear in Google Search starting May 7, 2026" (Google Search Central updates).

For how to fix the common failures, the guide on making passages easy for AI answers to cite goes into more detail, with sources for each recommendation.

Limits and what it cannot tell you

  • It does not run the pasted page's scripts. It cannot show what a rendering crawler would see after those scripts run. Treat the render-gap verdict as a prompt to check, not as proof.
  • It does not know which bot you care about. OpenAI documents GPTBot for training, OAI-SearchBot for search and ChatGPT-User for user-triggered visits. It says that sites opted out of OAI-SearchBot "will not be shown in ChatGPT search answers, though can still appear as navigational links", and that a robots.txt change can take about 24 hours to reach search. Anthropic documents ClaudeBot, Claude-SearchBot and Claude-User. Perplexity says Perplexity-User "generally ignores robots.txt rules" because a user asked for the fetch. The inspector reads no robots.txt file.
  • Its Google points rely on Google's own statements. The FAQ and llms.txt notes use Google's documentation changelog. They say nothing about any other AI system.
  • It works on one page at a time. It does not crawl a site, read a sitemap or compare pages.
  • Its chunking is one design. Other tools can split text differently, and so do the chunking strategies in the strategy comparator.
  • A pass is not a prediction. A page that passes every rule can still be ignored, and a page that fails one can still be cited.

For how the crawlers themselves are documented, read OpenAI's crawler overview and Perplexity's crawler page. The background on how a crawler reads a page is in the guide on how AI crawlers read your page.

Privacy: what happens to your HTML

The tool's code parses the pasted HTML with the browser's DOMParser, in this tab. The parsed copy is turned into plain data for the analysis, and no parsed node is attached to the page you are reading. The tool never writes your text into the page with innerHTML. Results are built from text nodes, so markup in a pasted page is shown as text and never runs.

The tool's code makes no request with your HTML, and it writes nothing to localStorage, cookies or IndexedDB, so a reload clears the input. The Page URL is used only to build citation links, and the tool does not request it. The share link holds the chunk size and nothing else. Downloads are created in this tab, and their object URLs are released after a short delay.

This page also loads the site's own promo widgets, which are separate code. The promo banner loads its product list through the site's own server and keeps its display state in your browser. A popup keeps its display flags there too. Neither reads this tool's text box. The two sample pages are fictional and exist only to show the tool working.

Questions

Is my HTML uploaded?

No. The tool's code parses the pasted text with DOMParser in this tab. It makes no request with your HTML, writes nothing to browser storage, and needs no account. The settings link holds only the chunk size. The site-wide promo banner is separate code, and it never reads this tool's text box.

How accurate is this?

It is a set of rules, not an AI model, and it does not measure any search engine. Token counts are estimates, not a vendor tokenizer's count. Each verdict shows its reason, so you can check it against the HTML. A pass means a rule was met. It does not mean a bot will read or cite the page.

Do AI crawlers run JavaScript, so client-side pages are invisible to them?

Not as a blanket rule. In December 2024 Vercel, with MERJ data, reported that none of the major AI crawlers it measured currently render JavaScript, and that the ChatGPT and Claude crawlers fetched JavaScript files without executing them. The primary data came from nextjs.org and the Vercel network over a few months, and two job-board sites were used to check the findings. That is a dated measurement, not a current guarantee. Put the content you need in the first HTML response. The guide on how AI crawlers read a page covers this with sources.

Does FAQ schema still get my page FAQ rich results?

Not in Google Search. Google's changelog says the FAQ rich result "will no longer appear in Google Search starting May 7, 2026". schema.org defines FAQPage as a page presenting frequently asked questions. That describes the content and makes no promise about any search or AI result. Keep the questions and answers visible in the text.

Does llms.txt make AI assistants cite my site?

No source here shows that. The llms.txt proposal asks sites to publish LLM-friendly content. Its author expects it to be used at inference time and says that is how it has been used. That is the author's own statement, and no source here measures it. Google says llms.txt files "aren't needed for Google Search" and "won't negatively or positively impact your visibility or rankings". This tool reads the HTML page, not llms.txt.

How is the main content picked?

Article, main, section and div containers are scored. The score rises with text length and paragraph count, falls with link density, and gets a small bonus for words such as article or content in an id or class. Blocks named for cookies, sidebars, comments or ads are removed unless they also carry a content word. Mozilla's Readability, the library behind Firefox Reader View, uses a similar approach.

Why does a chunk link go to a text fragment?

The chunk has no element id nearby. A text fragment (#:~:text=) links to text without an id. If the text does not match, the whole fragment is ignored and the top of the page is linked. Browser support varies, so treat a text fragment as a best effort.

Will a good audit score raise my place in AI answers?

No. The GEO paper by Aggarwal and colleagues (KDD 2024) found that citations, quotations and statistics raised the authors' visibility metric by over 40% on their benchmark, where answers came from gpt-3.5-turbo and the metric was their own. The paper also reports one experiment on Perplexity.ai, with gains of up to 37%. Those results come from the paper's own setup and metrics, not a promise for live AI search.

Can this tool change my page?

No. It reads the HTML you paste and writes reports you download. It cannot edit your site or send anything to a search engine. Use the fixes list as a checklist for your own templates, then test the live page again.