diff --git a/Data/JsonStream/Parser.hs b/Data/JsonStream/Parser.hs
--- a/Data/JsonStream/Parser.hs
+++ b/Data/JsonStream/Parser.hs
@@ -81,6 +81,10 @@
 import           Data.Monoid                 (Monoid, mappend, mempty)
 #endif
 
+#if MIN_VERSION_base(4,10,0)
+import           Data.Semigroup                 (Semigroup(..))
+#endif
+
 import           Control.Applicative
 import qualified Data.Aeson                  as AE
 import qualified Data.ByteString.Char8       as BS
@@ -166,19 +170,27 @@
 -- >>> let parser = arrayOf $ "key1" .: (arrayOf value) <> "key2" .: (arrayOf value)
 -- >>> parseByteString parser test :: [Int]
 -- [1,2,5,6]
+#if MIN_VERSION_base(4,10,0)
 instance Monoid (Parser a) where
   mempty = ignoreVal
-  mappend m1 m2 = Parser $ \tok -> process (callParse m1 tok) (callParse m2 tok)
+  mappend = (<>)
+instance Semigroup (Parser a) where
+  (<>) m1 m2 =
+#else
+instance Monoid (Parser a) where
+  mempty = ignoreVal
+  mappend m1 m2 =
+#endif
+    Parser $ \tok -> process (callParse m1 tok) (callParse m2 tok)
     where
       process (Yield v np1) p2 = Yield v (process np1 p2)
       process p1 (Yield v np2) = Yield v (process p1 np2)
-      process (Done ctx ntok) (Done {}) = Done ctx ntok
+      process (Done ctx ntok) Done {} = Done ctx ntok
       process (MoreData (np1, ntok)) (MoreData (np2, _)) =
           MoreData (Parser $ \tok -> process (callParse np1 tok) (callParse np2 tok), ntok)
       process (Failed err) _ = Failed err
       process _ (Failed err) = Failed err
       process _ _ = Failed "Unexpected error in parallel processing <|>"
-
 
 -- | Match items from the first parser, if none is matched, return items
 -- from the second parser. Constant-space if second parser returns
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,6 @@
+# 0.4.2.0
+Added Semigroup instance, compatibility with base-4.11
+
 # 0.4.1.5
 Renamed `_js_decode_string` function to avoid conflict with `aeson`.
 
diff --git a/json-stream.cabal b/json-stream.cabal
--- a/json-stream.cabal
+++ b/json-stream.cabal
@@ -1,5 +1,5 @@
 name:                json-stream
-version:             0.4.1.5
+version:             0.4.2.0
 synopsis:            Incremental applicative JSON parser
 description:         Easy to use JSON parser fully supporting incremental parsing.
                      Parsing grammar in applicative form.
@@ -64,7 +64,7 @@
   includes:            c_lib/lexer.h
   include-dirs:        c_lib
   cc-options:          -fPIC
-  Build-Depends:         base >= 4.7 && <4.11
+  Build-Depends:         base >= 4.7 && <4.12
                        , doctest >= 0.9.3
                        , bytestring
                        , text
@@ -93,7 +93,7 @@
   hs-source-dirs:      test, .
   default-language:    Haskell2010
   ghc-options:         -Wall
-  build-depends:         base >=4.7 && <4.11
+  build-depends:         base >=4.7 && <4.12
                        , bytestring
                        , text
                        , aeson
