Page size checker

Measure a page's HTML size before and after compression, see what fills it, from inline scripts and styles to SVG and Base64 images, count its DOM elements and check it against Googlebot's 2 MB limit.

  • Compressed and full HTML size
  • Breakdown of what fills the HTML
  • No signup needed
Ready
Try:

HTML size

Enter a URL to start

Sent —
DOM —
Status
—
First byte
—
Googlebot
—
  1. Request
    Waiting for input
    As Chrome on Android
  2. Response
    —
    Redirects followed
  3. Sent
    —
    Compressed bytes
  4. HTML
    —
    After decompression

Page size report

Enter a URL above to see its HTML size, compressed size, what fills the HTML, its DOM size, the files it loads and how it compares with Googlebot's 2 MB limit.

Fair-use limit: 30 checks per hour and 200 per day for each visitor IP address. Results are cached for 10 minutes; Check again fetches a fresh copy.

Why HTML size matters

The HTML is the first file a browser and a crawler download. Everything else on the page waits for it.

It comes first

The browser cannot find images, styles and scripts until it has read the HTML that names them, so a heavy document delays everything after it.

Compression helps the network, not the parser

Brotli or gzip often shrink HTML by 70 to 90% on the way, but the browser still parses every byte after decompression.

Googlebot reads the first 2 MB

Google fetches up to 2 MB of each URL, headers included, and ignores what comes after. Tags near the end of a huge page can be missed.

DOM size is about elements

A page can be small in bytes and still hold thousands of elements, which slows style calculation and layout, mostly on phones.

The numbers in the report

What each measurement means, and a reference point for it.

MeasurementMeaningGood to know
HTML size The HTML after decompression: what the browser parses and Googlebot counts. Googlebot reads the first 2 MB of each URL.
Transferred Bytes of the HTML sent over the network, usually compressed. Decides download time on slow connections.
Content-Encoding The compression the server used: br (Brotli), zstd, gzip or none. Text HTML often shrinks by 70 to 90%.
DOM elements HTML elements inside the body once the page is parsed. Lighthouse warns above 800 and flags above 1,400.
DOM depth The most levels of nesting from the body to the deepest element. Deep nesting usually means wrapper-heavy markup.
Text share Visible text as a share of the HTML bytes. A low share means markup and inline code dominate.
Time to first byte Time from sending the request to the first byte of the answer. Measured from our server, not your visitors' location.
Render-blocking files Scripts without async or defer and stylesheets in the head. The browser waits for them before it shows the page.

How this tool works

What happens between pressing Check and seeing the report.

  1. You enter a URL

    Our server requests it like the browser you chose, follows redirects one hop at a time and checks every address first.

  2. Bytes are counted twice

    The compressed bytes as they arrive, then the HTML after decompression. Gzip is also tried locally to compare.

  3. The HTML is taken apart

    Inline scripts, styles, JSON, SVG, Base64 images, comments, whitespace, text and markup are measured, and the DOM is parsed.

  4. The results are compared

    With Googlebot's 2 MB limit, Lighthouse's DOM size thresholds and HTTP Archive's data on typical pages.

What this tool does, and what it doesn't

A plain list, so you know exactly what to expect.

This tool does

  • Measure compressed and full HTML size
  • Show what fills the HTML, byte by byte
  • List the largest inline blocks
  • Count DOM elements and nesting depth
  • Check Googlebot's 2 MB limit
  • Compare checks before and after a change

This tool does not

  • Download images, CSS, JS or fonts
  • Run JavaScript or render the page
  • Measure Core Web Vitals
  • Log in or send your cookies
  • Get past bot protection
  • Check private or local addresses

Where your data goes

The URL you enter is requested by our server with the browser profile you choose. The site sees our server's IP address, not yours. The result is cached for 10 minutes, then deleted. Your recent checks stay in your own browser. A hashed, temporary copy of your IP address is used for rate limiting. Like any website, our server may keep normal access logs, as described in our privacy policy.

Open PageSpeed Insights

Why your results might look unexpected

The six surprises people run into most, and what each one means.

Tiny HTML, but the site feels slow

Apps built with React or Vue send a small HTML shell and do the work in JavaScript files, which this tool does not measure.

Only a few KB, or status 403

Bot protection or a firewall answered instead of the site. You measured the block page, not the real one.

A huge JSON block

Frameworks such as Next.js and Nuxt embed the page data for hydration. Trim what the page does not need.

"Not compressed"

The server or CDN did not compress the response for our request. Enable Brotli or gzip for text/html.

Different size than in DevTools

Cookies, logins, consent choices and your location change what is sent. DevTools also adds the headers.

Size changes between checks

Ads, A/B tests, timestamps, nonces and personalised blocks make every response a little different.

Questions about page size

What does this page size checker measure?

It measures the HTML document of one URL in two ways: the bytes sent over the network, usually compressed with Brotli, Zstandard or gzip, and the size after decompression, which is what the browser parses and what Googlebot counts. It also shows what fills the HTML and counts its DOM elements. It does not download the images, CSS, JavaScript and fonts the page loads; use PageSpeed Insights or WebPageTest for the total page weight.

What is a good HTML size?

There is no official target. HTTP Archive's 2025 Web Almanac puts the median HTML document at about 33 KB on mobile, and 90% of pages send less than about 151 KB. Under 100 KB uncompressed is easy for browsers to parse. Pages above 500 KB usually carry large inline scripts, styles, framework data or Base64 images that can move to separate, cacheable files.

Does Googlebot have a size limit for HTML?

Yes. Google documents that Googlebot fetches the first 2 MB of each URL for Google Search, HTTP headers included, and ignores the rest. CSS and JavaScript files are fetched separately and each has its own limit; PDF files can be up to 64 MB. Keep the title, meta tags, canonical link and structured data near the top so they are always read.

Why is my HTML so large?

The usual causes are inline CSS added by themes, page builders and optimisation plugins, inline JavaScript, framework data such as Next.js __NEXT_DATA__ sent for hydration, large inline SVG icons, Base64 images embedded as data URIs, and deeply nested wrapper elements. The breakdown and the list of largest inline blocks show which of these applies to your page.

How many DOM elements are too many?

Lighthouse warns when the body holds more than about 800 elements and flags it as an error above about 1,400. Since Lighthouse 13 this is part of the Optimize DOM size insight. A large DOM costs memory and makes style calculation and layout slower, especially on phones, so reduce wrappers and render long lists or hidden menus only when needed.

Why do I get a different size than in Chrome DevTools?

DevTools shows the size for your own browser, with your cookies, consent choices, login and location. Our server requests the page without cookies from its own location, so personalised content, A/B tests, cookie banners and bot protection can change what is sent. The transferred size in DevTools also includes HTTP headers, which this tool lists separately.

Is the address I check stored?

The page is requested by our server, so the site sees our server's IP address and the browser profile you chose, not your IP. The result is cached on our server for 10 minutes, then deleted. Your recent checks are saved only in your own browser so you can compare them, and Clear removes them. A hashed, temporary copy of your IP address is used for rate limiting. Like any website, our server may keep normal access logs, as described in our privacy policy.