Features MCP Pricing Docs Blog

See your page the way a crawler does

Enter a URL. It is fetched once, the way a crawler fetches it — no JavaScript, no cookies — and you see what is actually in the HTML: the text in reading order, the headings, the links a crawler can follow and the tags a search result is built from.

Why look at a page without JavaScript

A browser runs the page's scripts before you see anything, so what you see is not what was sent. A crawler starts from what was sent. If the words, links and tags are in that first HTML response, every crawler reads them. If a script builds them afterwards, only a crawler that renders will — and later, if at all.

Who renders and who does not

  • Googlebot renders JavaScript, but in a second pass: the HTML is crawled first and the page is queued for rendering. Content that only exists after rendering is indexed later, and a script that fails or times out leaves the page as this tool shows it.
  • Bingbot renders too, with fewer resources to spend on it; Microsoft's own guidance is to serve the content in the HTML.
  • AI crawlers — GPTBot, ClaudeBot, PerplexityBot and the like — fetch HTML and, by every public measurement so far, do not run JavaScript. A page that is empty here is empty to them.
  • Link previews in Slack, Discord, X, LinkedIn and messaging apps read the Open Graph tags from the raw HTML and nothing else.

Reading the result

  • Rendered by JavaScript — under 50 words next to an empty mount point such as <div id="app"></div> or a <noscript> message. A single-page app without server-side rendering looks like this.
  • Thin — under 200 words with a script bundle on the page. Either the page really is short, or its shell is rendered on the server and its content fetched in the browser; the text below tells you which.
  • In the HTML — the content arrived with the response. Check the outline and the text below it say what the page is about.

How to fix a page that is empty here

Render the content on the server: server-side rendering or static generation in Next.js, Nuxt, SvelteKit or Astro, or plain server templates. Put the title, description, canonical and Open Graph tags in the server response rather than setting them from a script, and make every navigation link a real <a href>. Pre-rendering for bots only is a stopgap: two versions of a page drift apart.

What this tool does not do

It makes one GET request from our server, with no cookies, and reads at most 2 MB of HTML. It does not run JavaScript, check robots.txt or fetch the page's CSS and images. A site that blocks data-centre addresses or verifies crawlers by reverse DNS will answer differently than it does to the real crawler. Only public addresses on ports 80 and 443 are fetched, and a result is cached for ten minutes.

The public pages of Bilis are plain server-rendered HTML for exactly this reason — run this tool on any of them.