When optimizing a website’s performance, the very first thing you should check is whether or not your site is taking advantage of GZIP Compression.

What is GZIP

The Cole’s notes of what is GZIP, is that GZIP Compression is a mechanism where the server compresses the requested web page, image, or other file, before serving it to the browser.  If you’ve ever “zipped” up file for archiving, or before sending it in an email, it’s the same concept.

As soon as the file has been received by the web browser, it decompresses it and then uses it, either to display, or to render aspects of the page.

How To Enable GZIP

Depending upon the type of web server that you’re running, there are different ways to enable GZIP compression.  In this article, we’re going to go over enabling GZIP on the Apache web server platform.

Step #1: Test Your Web Page

One of the tools we use to test a web page is checkgzipcompression.com.  Test out your home page to see how big it is, and how much can be saved by compressing it.  In many cases, HTML pages can be compressed by over 50% if they are not already compressed with GZIP.

Step #2: Enable GZIP with .htaccess file

Apache technically has two possible compression options available, in most cases.  Depending upon your web sever, and how it is configured, you may have on or the other installed.  The code below covers both compression mechanisms.

In the root folder of your website, create a file called “.htaccess” (yes, that is a dot before the ‘h’), if you don’t already have one.  At the very beginning of that file, add the following code:

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/opentype
# For Olders Browsers Which Can't Handle Compression
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

In the first section of the code you’ll see a special conditional tag <IfModule mod_gzip.c> and then later, a closing conditional tag </IfModule>.  What these tags do is tell the server that is the module “GZIP” is installed, then use the enclosed code.

You will also see that there is a second set of conditional tags that surround the code that would be used if the server has the “DEFLATE” module installed instead.

Once you’ve placed the code in your .htaccess file, save it, and then upload it to the website root in your live site.

Step #3: Test Your Compressed Page

Head back to checkgzipcompression.com — you should now be able to test your home page and see that it is now compressed with GZIP and by how much.  This can immediately impact how fast your web pages load, and help to boost your Google PageSpeed score by as much as 15 points.