How do I find out if a web-page is gzipped or compressed using Unix command line utility called curl? How do I make sure mod_deflate or mod_gzip is working under Apache web server? How do I verify gzip/ deflate compression support using curl on Linux, macOS and Unix-like systems?

Tutorial details
Difficulty level Easy
Root privileges No
Requirements curl or wget
Est. reading time 1m
When content is compressed, downloads are faster because the files are smaller—in many cases, less than a quarter the size of the original. This is very useful for JavaScript and CSS files (including html), faster downloads translates into faster rendering of web pages for end-user. The mod_deflate or mod_gzip Apache module provides the DEFLATE output filter that allows output from your server to be compressed before being sent to the client over the network. Most modern web browser support this feature. You can use the curl command to find out if a web page is gzipped or not using the the following simple syntax.

curl command syntax to find if a website using gzip / deflate encoding

The syntax is:
curl -I -H 'Accept-Encoding: gzip,deflate' https://domain-name
## OR ##
curl -s -I -L -H 'Accept-Encoding: gzip,deflate' https://domain-name
## OR ##
curl -s -I -L -H 'Accept-Encoding: gzip,deflate' https://domain-name | grep -i '^content-encoding'

Where,

  1. -s – Don’t show progress meter or error messages.
  2. -I – Work on the HTTP-header only.
  3. -H 'Accept-Encoding: gzip,deflate' – Send extra header in the request when sending HTTP to a server.
  4. -L – f the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option will make curl redo the request on the new place.
  5. https://domain-name – Your URL, it can start with http or https.

Examples

Type the following command:

curl -I -H 'Accept-Encoding: gzip,deflate' http://www.cyberciti.biz/
curl -I -H 'Accept-Encoding: gzip,deflate' https://www.cyberciti.biz/

Here

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 06 Nov 2012 18:59:26 GMT
Content-Type: text/html
Connection: keep-alive
X-Whom: l2-com-cyber
Vary: Cookie
Vary: Accept-Encoding
Last-Modified: Tue, 06 Nov 2012 18:51:58 GMT
Cache-Control: max-age=152, must-revalidate
Content-Encoding: gzip
X-Galaxy: Andromeda-1
X-Origin-Type: DynamicViaDAL

Curl command to test accept-encoding/compression gzip bash test function

Create a bash shell function and add to your ~/.bashrc file:

# add to your shell statup
 
gzipchk(){ curl -I -H 'Accept-Encoding: gzip,deflate' "$@" | grep --color -i 'Content-Encoding:'; }

OR use the silent mode to hide progress bar:

# add to your ~/.bashrc
 
# this version check for both gzip and brotli compression 
gzipchk(){ curl -sILH 'Accept-Encoding: gzip,deflate,br' "$@" | grep --color -i 'Content-Encoding:'; }

Save and close the file. Reload ~/.bashrc file, run:
$ source ~/.bashrc file
Test the gzipchk() as follows:
$ gzipchk www.cyberciti.biz
$ gzipchk https://www.redhat.com

How to find if a website using gzip deflate compression using curl on Linux and Unix

Linux curl deflate gzip test in action

Checking if your web server is sending the Brotli or gzip compression response

In short we use the following curl command:
curl --sILH 'Accept-Encoding: gzip,deflate,br' your-website-here
## or filter out using the grep command ##
DOM="your-website-here"
curl --sILH 'Accept-Encoding: gzip,deflate,br' $DOM |\
grep -i --color '^Content-Encoding:'

Use wget to check if a website using gzip / deflate / brotli compression

We can use the wget command too as follows when curl is not installed on your system to find out if a website web server using gzip/deflate compression as follows:

DOMAIN="https://www.cyberciti.biz"
wget -O /dev/null --server-response \
--header "Accept-Encoding: gzip,deflate,br" \
$DOMAIN
# another example #
wget -O /dev/null --server-response \
--header "Accept-Encoding: gzip,deflate,br" $DOMAIN 2>&1 |\
grep --color -i 'Content-Encoding:'

Conclusion

With the curl command line-tool, you can quickly check if your web server is sending the Gzip compressed payload to your web browser. No need to use 3rd party website as curl is installed on Linux, macOS, *BSD and Unix-like systems.


🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 1 comment so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersdf ncdu pydf
File Managementcat tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
1 comment… add one
  • mitchell Nov 20, 2012 @ 0:59

    Adding the ‘-s‘ switch to curl would instruct it not to print the progress meter.

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum