---
title: Free Gzip Compression Test
description: Check whether a site serves gzip and Brotli, from a real probe location: the test sends one request offering only gzip and one offering only Brotli, and shows the Content-Encoding the server returned to each. It doesn't measure sizes; the curl commands on this page show the bytes compression saves.
canonical: https://watchfor.io/gzip-test
---

[Back to all free tools](/free-tools)

# Gzip Compression Test

Check whether a site serves gzip and Brotli, from a real probe location: the test sends one request offering only gzip and one offering only Brotli, and shows the Content-Encoding the server returned to each. It doesn't measure sizes; the curl commands on this page show the bytes compression saves.

[How to use this tool](/blog/how-to-test-gzip-compression)

Result

No result yet

Fill in the form above and run it — the result appears here.

Monitor this 24/7 — get alerted when a failure is confirmed.

[Start free](/auth/sign-up)

Only run these tools against systems you own or are authorized to test. Using them to scan or probe systems without permission violates our [Terms](/legal/terms).

## What is Gzip Compression Test ?

HTTP compression shrinks text responses — HTML, CSS, JavaScript, JSON, SVG — by 60–80% before they cross the network. The browser announces what it can decode in Accept-Encoding: gzip, deflate, br, zstd ; the server picks one and says so in Content-Encoding . Gzip has been universal since the 1990s and is the safe baseline; Brotli compresses text 15–20% smaller still and is supported by every current browser. A site serving neither is sending three to five times more bytes than it needs to, on every page, to everyone.

This test requests a page from a real probe twice — once with Accept-Encoding: gzip , once with Accept-Encoding: br — and reports the Content-Encoding the server returned to each. It catches the origin with compression off, the CDN path that doesn't compress a content type, and the reverse proxy that strips Accept-Encoding on its way to the backend. It doesn't measure sizes; the curl commands below cover that.

## How it works

Two requests from a real probe, one per format:

- 1 Offer gzip, then Brotli — The probe sends Accept-Encoding: gzip on one request and Accept-Encoding: br on the other, one format each, so a server that prefers Brotli when both are offered still has to show whether gzip works.
- 2 Read Content-Encoding — The header on each response says what was applied. gzip or br means compressed; missing or identity means uncompressed. Gzip gets the headline: Yes when the gzip request came back gzipped.
- 3 Check sizes yourself — The test doesn't count bytes. The curl commands below show how much smaller compression makes the page; a 120 KB HTML page arriving as 22 KB is working as intended.

Compression applies per content type — the HTML may be compressed while the JSON API or the SVG icons are not. Test the URLs that matter, not just the homepage.

## When you'd use it

### Page speed audit

Lighthouse flags "Enable text compression" as one of the largest wins. Test the public hostname and then the origin to see which layer drops the encoding: origin, proxy or CDN.

### After changing hosting or CDN

The old host compressed; the new nginx has gzip off by default for everything but text/html . Test CSS and JS URLs, not only the page.

### API responses

JSON compresses extremely well and often isn't compressed at all because the API framework never enabled it. A 400 KB list endpoint at 40 KB is a mobile-user experience upgrade for one config line.

### Verifying Brotli

You enabled Brotli. Is it being served, or does the CDN only compress with gzip on the edge? The Content-Encoding value settles it.

## Reading the result

### Gzip: Yes, No or Not tested

Yes means the gzip request came back with Content-Encoding: gzip . No means it came back uncompressed (or with another coding, shown next to it). Not tested means the gzip request didn't get an answer — the reason is shown under the result — so it says nothing either way.

### Brotli row

What the Brotli-only request got back. br is the better format for text; a gzip-only server answering uncompressed here is expected. Images, video and already-compressed files ( .woff2 , .zip ) should not be re-compressed — that's correct, not a finding.

### Check time

How long the request took from the probe location, including DNS and redirects. It's a single request, not a page speed measurement.

### Small responses

Compressing a 200-byte response can make it larger; servers skip it below a threshold (nginx gzip_min_length ). Not an error.

## Check it yourself

curl -sI -H 'Accept-Encoding: gzip, br' https://example.com | grep -i content-encoding Compare curl -s https://example.com | wc -c with curl -s -H 'Accept-Encoding: gzip' https://example.com | wc -c for the sizes.

## Common pitfalls

### Compression enabled for text/html only

nginx's gzip_types default is exactly that. CSS, JS, JSON, SVG and XML need to be listed explicitly. Apache's mod_deflate and Caddy's encode have similar lists.

### A proxy that drops Accept-Encoding

Some load balancers and WAFs strip the header before forwarding, so the origin never compresses and the proxy doesn't either. The test from outside shows the net result.

### Compressing with TLS and reflecting secrets (BREACH)

Compressing a response that mixes attacker-controlled input with a secret (a CSRF token) leaks the secret to a side-channel attacker. Modern mitigations (per-request token masking, SameSite cookies) handle it; don't disable compression site-wide because of it.

## Run Gzip Compression Test on every change, not just once.

Get alerted when an outage is confirmed — across HTTP, DNS, SSL, RDAP, ping, blacklist and more. Free forever for 15 monitors. No card.

[Start free](/auth/sign-up)

## Frequently asked questions

Gzip or Brotli — which should I use? Both. Serve Brotli to clients that accept it (all modern browsers) and gzip to the rest. Brotli produces 15–20% smaller text at similar decode speed; pre-compress static assets at the highest level and use a moderate level for dynamic responses.

How do I enable gzip in nginx? gzip on; gzip_types text/css application/javascript application/json image/svg+xml text/xml application/xml; gzip_min_length 256; gzip_vary on; in the http block, then reload and re-test.

Why is Content-Encoding missing on my images? Correct behaviour. JPEG, PNG, WebP, MP4 and WOFF2 are already compressed; gzip would add CPU time and bytes. Only text-like types should be compressed.

Does compression slow the server down? Slightly, and far less than the network time it saves. For static files, pre-compress at build time ( .gz / .br alongside the original) and serve them directly — zero runtime cost.

Is deflate the same as gzip? Nearly — gzip is deflate with a header and checksum. Browsers accept both; gzip is the one to send because some old proxies mishandled raw deflate .

## Related web tools

- [Brotli CheckerCheck whether a site serves Brotli-compressed responses (Content-Encoding: br) for faster page loads.](/brotli-checker)
- [Software Exposure CheckerSee which software versions your website reveals in its headers and HTML — web server, PHP, CMS, JavaScript libraries — and whether any is outdated, past end of life or has known CVEs. Graded A+ to F, with the fix for each. One plain GET, no signup.](/software-exposure-checker)
- [PHP Version CheckerCheck your PHP version, EOL date and known CVEs — php2shell (CVE-2026-109618, CVE-2026-109619) first — from the headers your server already sends. Graded A+ to F, with the exact version to upgrade to. Passive: plain GET requests only, no signup.](/php-version-checker)
- [MCP Server CheckerTest a Model Context Protocol server the way an agent does — initialize handshake, protocol version, HTTPS, sign-in discovery and the full tool inventory — and get an A+ to F grade with the exact fix for every problem. Open servers are never marked down for being open.](/mcp-server-checker)

---

Canonical page: https://watchfor.io/gzip-test · Site guide: https://watchfor.io/llms.txt
