Compression check

GZIP/Brotli compression — save bandwidth and speed up loading.

Compression Check (Gzip/Brotli)

Check if Gzip or Brotli compression is enabled on the server. Compression reduces response size by 60-80%, speeding up page loads.

Compression type detection
Size before and after compression
Savings percentage
Gzip, Deflate, Brotli support

How to Use

  1. Enter a page URL to check server compression settings
  2. The system will check GZIP, Brotli and other compression algorithm support
  3. Find out if compression is enabled and how much traffic it saves

Use Cases

  • Validate compression after CDN or server config changes.
  • Ensure HTML/CSS/JS responses are delivered with bandwidth savings.

Limitations

  • Results depend on the tested URL and request headers.
  • Some CDNs enable compression only for specific MIME types.

Example Input / Output

Example Input
https://example.com/
Example Output
Content-Encoding: br, estimated transfer reduction: 64%.

FAQ

Compression reduces data transfer size by 60-80%, speeding up loading and reducing bandwidth. Google considers load speed as a ranking factor.

How this gzip and Brotli checker works

The tool requests your URL twice. The first request behaves like a browser that accepts compressed responses: Accept-Encoding lists the supported algorithms and the server picks one. The second asks for Accept-Encoding: identity, i.e. no compression. Comparing the two gives you three numbers: the uncompressed size, the bytes actually transferred, and the percentage saved.

  • Algorithm badge (GZIP, Brotli or Deflate) — whatever the server put in Content-Encoding. Only one lights up because a response is always encoded one way. If a server supports both gzip and Brotli it will usually pick Brotli, and the gzip badge stays grey. That's expected.
  • Savings. HTML typically compresses by 70–90%. If compression is on but savings are under 30%, the page is probably tiny or compressed at a very low level.
  • No badge lit, yet the compressed size is much smaller. The server most likely answered with zstd, which has no badge of its own — Cloudflare does this, for example. Confirm with curl (commands below).

Only the document at the URL you enter is tested. To check that CSS, JS and SVG are compressed too, enter a direct link to the file.

Gzip vs Brotli vs zstd

AlgorithmContent-EncodingNotes
gzipgzipSupported by every client and server. The baseline.
BrotlibrDeveloped by Google; usually 15–25% smaller than gzip on text. Browsers only request it over HTTPS. Level 11 is slow, so static assets are pre-compressed at build time.
ZstandardzstdDeveloped at Meta. Ratios close to Brotli with much faster compression, which suits dynamic pages. Supported by Chrome and Firefox; Cloudflare serves it to visitors automatically.
deflatedeflateLegacy; no reason to enable it separately.

Compress text formats — HTML, CSS, JS, JSON, XML, SVG, TTF/OTF fonts. JPEG, PNG, WebP, AVIF, MP4 and WOFF2 are already compressed; re-compressing them burns CPU for nothing.

How to enable compression

nginx: gzip

gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_vary on;
gzip_proxied any;
gzip_types text/css application/javascript application/json
           application/xml image/svg+xml font/ttf font/otf;

No need to list text/html — it is always compressed. gzip_vary on adds Vary: Accept-Encoding so proxies and CDNs don't serve a compressed copy to a client that can't decode it.

nginx: Brotli

Brotli isn't part of stock nginx; you need the ngx_brotli module. Some distributions ship it as a package; otherwise build it as a dynamic module for your nginx version.

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

brotli on;
brotli_comp_level 5;
brotli_static on;
brotli_types text/css application/javascript application/json
             application/xml image/svg+xml font/ttf font/otf;

brotli_static on serves pre-built .br files (e.g. app.js.br compressed at level 11 during the build), while dynamic HTML is compressed on the fly at level 4–6. Keep gzip enabled for clients without Brotli.

Apache and .htaccess

<IfModule mod_brotli.c>
  AddOutputFilterByType BROTLI_COMPRESS text/html text/css application/javascript application/json image/svg+xml
</IfModule>
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/css application/javascript application/json image/svg+xml
</IfModule>

mod_brotli ships with Apache 2.4.26 and later. Despite its name, mod_deflate serves gzip. On shared hosting these modules are sometimes disabled — enable compression in the control panel or ask support.

Cloudflare and other CDNs

Cloudflare compresses text responses for visitors on its own (gzip, Brotli, zstd); fine-tune it with Compression Rules. Remember that this check sees the CDN's response, not your origin's: the origin-to-CDN leg may still be uncompressed. Query the origin directly if you need to test it.

WordPress and site builders

On WordPress, enable compression at the server rather than with a plugin: caching plugins usually just write rules into .htaccess, which nginx ignores. On Shopify, Wix, Squarespace and similar platforms compression is handled for you.

Check Brotli and gzip with curl

To see what the server returns for a specific algorithm, send a GET request (some servers skip compression on HEAD):

curl -s -o /dev/null -D - -H 'Accept-Encoding: br' https://example.com/ | grep -i content-encoding
curl -s -o /dev/null -D - -H 'Accept-Encoding: gzip' https://example.com/ | grep -i content-encoding
curl -s -o /dev/null -D - -H 'Accept-Encoding: zstd' https://example.com/ | grep -i content-encoding

Transferred bytes: curl -s -o /dev/null -H 'Accept-Encoding: br' -w '%{size_download}\n' https://example.com/; drop the header to get the uncompressed size. In the browser, DevTools → Network shows the Content-Encoding column and the gap between transferred and resource size.

Pre-compressing static assets

For CSS, JS and SVG it pays to compress once at build time at maximum level instead of on every request. Ship .br and .gz files next to the originals, and the server (brotli_static on and gzip_static on in nginx) hands the ready-made file to clients that accept it:

brotli -q 11 -k dist/app.js      # creates dist/app.js.br
gzip -9 -k dist/app.js           # creates dist/app.js.gz
zstd -19 -k dist/app.js          # creates dist/app.js.zst

The -k flag keeps the original for clients that can't decompress. Bundlers do the same with compression plugins (Vite and webpack both have them). Rebuild compressed copies together with the originals: a stale .br next to a fresh app.js is a classic cause of "works in one browser, broken in another".

Why it matters for SEO: fewer bytes means HTML arrives sooner and the browser discovers CSS and the hero image earlier, which directly trims LCP on slow mobile connections. Googlebot also requests compressed responses, so your server delivers pages to it faster too.

Common problems

  • Only some types compressed. HTML is compressed but JS and CSS aren't because their MIME types are missing from gzip_types. Test a direct link to a large script.
  • Double compression. The app (PHP with zlib.output_compression, for instance) compresses and the server tries again. Compress in one place — preferably the web server.
  • Missing Vary: Accept-Encoding. A caching proxy may hand a compressed copy to a client that can't read it. The HTTP headers checker shows every response header.
  • Level too high for dynamic pages. Brotli 11 or gzip 9 on the fly adds more server time than it saves on the wire.

Compression is one of the cheapest speed wins: fewer bytes means HTML arrives sooner and rendering starts earlier. For the bigger picture run the page speed test, and check your protocol version with the HTTP/2 checker.

Improve search rankings

SEO problems may be costing you traffic. Cascade link building will improve site visibility in search.

Cascade link promotion for your site $30 bonusBacklinks 5→50→5000 across 100+ platforms. From $30 to start, plus a $30 bonus for newcomers.