diff --git a/fuzzy.cabal b/fuzzy.cabal
--- a/fuzzy.cabal
+++ b/fuzzy.cabal
@@ -1,5 +1,5 @@
 name:                fuzzy
-version:             0.1.0.1
+version:             0.1.1.0
 synopsis:            Filters a list based on a fuzzy string search.
 homepage:            http://github.com/joom/fuzzy
 license:             MIT
diff --git a/src/Text/Fuzzy.hs b/src/Text/Fuzzy.hs
--- a/src/Text/Fuzzy.hs
+++ b/src/Text/Fuzzy.hs
@@ -33,7 +33,7 @@
 -- Just ("infinite",3)
 --
 -- >>> match "hsk" ("Haskell",1995) "<" ">" fst False
--- Just ("<h>a<s><k>ell",5)
+-- Just ("<H>a<s><k>ell",5)
 --
 {-# INLINABLE match #-}
 match :: (T.TextualMonoid s)
@@ -51,8 +51,6 @@
     null = not . T.any (const True)
 
     s = extract t
-    (s', pattern') = let f = T.map toLower in
-                     if caseSensitive then (s, pattern) else (f s, f pattern)
 
     (totalScore, currScore, result, pat) =
       T.foldl'
@@ -61,16 +59,16 @@
             case T.splitCharacterPrefix pat of
               Nothing -> (tot, 0, res <> T.singleton c, pat)
               Just (x, xs) ->
-                if x == c then
+                if toLower x == toLower c then
                   let cur' = cur * 2 + 1 in
                   (tot + cur', cur', res <> pre <> T.singleton c <> post, xs)
                 else (tot, 0, res <> T.singleton c, pat)
-        ) (0, 0, mempty, pattern') s'
+        ) (0, 0, mempty, pattern) s
 
 -- | The function to filter a list of values by fuzzy search on the text extracted from them.
 --
 -- >>> filter "ML" [("Standard ML", 1990),("OCaml",1996),("Scala",2003)] "<" ">" fst False
--- [Fuzzy {original = ("Standard ML",1990), rendered = "standard <m><l>", score = 4},Fuzzy {original = ("OCaml",1996), rendered = "oca<m><l>", score = 4}]
+-- [Fuzzy {original = ("Standard ML",1990), rendered = "Standard <M><L>", score = 4},Fuzzy {original = ("OCaml",1996), rendered = "OCa<m><l>", score = 4}]
 {-# INLINABLE filter #-}
 filter :: (T.TextualMonoid s)
        => s        -- ^ Pattern.
diff --git a/tests/tests.hs b/tests/tests.hs
--- a/tests/tests.hs
+++ b/tests/tests.hs
@@ -48,6 +48,9 @@
         (@?=) (head (F.filter "cb" ["cab", "acb"] "" "" id True) )
               (head (F.filter "cb" ["acb"] "" "" id True))
       ]
+    , TestLabel "should respect case when filtering case insensitive" $ from [
+        map F.original (F.filter "abc" ["aBc"] "" "" id False) @?= ["aBc"]
+      ]
     ]
   ]
 
