Baron Munchausen’s Crawl Test Lab

Uncompressed Assets: Gzip Compression Example

My blower could fill every sail in the Turkish fleet with one breath, and I carried him up the mountain fully inflated, for I was told the road was narrow.

The short answer

What it is
An uncompressed asset is a 2xx text response of at least 1 KB with no Content-Encoding header. A large asset is JavaScript over 300 KB, or CSS or fonts over 100 KB, in transfer size.
Why it matters
Text files shrink well, so skipping compression wastes bandwidth and time on each visit. Large scripts cost even more, since the browser must also parse and run them.
How a crawler should report it
Report the URL, content type, transfer size, and Content-Encoding value, and warn when that header is absent on text of 1 KB or more. Raise a separate large asset warning when the size limits are passed.
Live examples
The sun, wrapped up and miserable, suffering from chilblains in a hard winter.
Fig. 38. The sun, swollen and sore, was served without gzip.

Finding Text Files Sent Without Any Compression

Gzip compression makes text files smaller before they cross the network. The browser lists what it can decode in the Accept-Encoding header. The server picks a method and names it in Content-Encoding. Compression goes missing for several reasons. A server module may be turned off, or its list of file types may be too short. A proxy may strip the header, and Cache-Control: no-transform tells proxies and CDNs to leave the bytes alone.

Browsers decode a compressed response on their own, so visitors notice only the speed. Without compression, every byte of HTML, CSS, JSON, and JavaScript travels in full. That hits people on slow connections the hardest. Crawlers benefit too. Googlebot supports gzip, deflate, and Brotli, so a compressed site takes less time to fetch. Note that compression does not make a script cheaper to run. A huge bundle stays slow after it arrives.

To test a file, send a request with curl -sI -H 'Accept-Encoding: gzip, br' URL and look for Content-Encoding in the answer. Do this for HTML, scripts, stylesheets, SVG, and JSON. Very small files may be skipped on purpose, since compression saves little on them. Formats such as JPEG, WebP, and WOFF2 are already compressed. Running gzip over them adds work and saves almost nothing, so do not flag them.

To fix this, turn on gzip or Brotli at the server or CDN and include all text types. Brotli usually compresses text better than gzip, and it is a good first choice where it is available. Keep gzip as a fallback. Send Vary: Accept-Encoding so caches store each version apart. For bundles that stay too large, split the code by route and remove libraries you no longer use. Then test again from outside your network.