diff --git a/Network/Wai/Middleware/Gzip.hs b/Network/Wai/Middleware/Gzip.hs
--- a/Network/Wai/Middleware/Gzip.hs
+++ b/Network/Wai/Middleware/Gzip.hs
@@ -21,6 +21,7 @@
 import Data.Maybe (fromMaybe)
 import Data.Enumerator (($$), joinI)
 import qualified Data.ByteString.Char8 as S8
+import qualified Data.ByteString as S
 
 -- | Use gzip to compress the body of the response.
 --
@@ -39,12 +40,14 @@
     return $
         case res of
             ResponseFile{} | not files -> res
-            _ -> if "gzip" `elem` enc
+            _ -> if "gzip" `elem` enc && not isMSIE6
                     then ResponseEnumerator $ compressE $ responseEnumerator res
                     else res
   where
     enc = fromMaybe [] $ (splitCommas . S8.unpack)
                     `fmap` lookup "Accept-Encoding" (requestHeaders env)
+    ua = fromMaybe "" $ lookup "user-agent" $ requestHeaders env
+    isMSIE6 = "MSIE 6" `S.isInfixOf` ua
 
 compressE :: (forall a. ResponseEnumerator a)
           -> (forall a. ResponseEnumerator a)
@@ -64,4 +67,4 @@
 splitCommas [] = []
 splitCommas x =
     let (y, z) = break (== ',') x
-     in y : splitCommas (drop 1 z)
+     in y : splitCommas (dropWhile (== ' ') $ drop 1 z)
diff --git a/wai-extra.cabal b/wai-extra.cabal
--- a/wai-extra.cabal
+++ b/wai-extra.cabal
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             0.4.0.1
+Version:             0.4.0.2
 Synopsis:            Provides some basic WAI handlers and middleware.
 Description:         The goal here is to provide common features without many dependencies.
 License:             BSD3
