diff --git a/Data/GroupedList.hs b/Data/GroupedList.hs
--- a/Data/GroupedList.hs
+++ b/Data/GroupedList.hs
@@ -70,7 +70,9 @@
 import Control.Arrow (second)
 import qualified Data.Map.Strict as M
 import Data.Functor.Identity (Identity (..))
+import Control.Applicative (liftA2)
 import Control.Monad (foldM)
+import Data.Binary (Binary (..))
 
 ------------------------------------------------------------------
 ------------------------------------------------------------------
@@ -94,6 +96,10 @@
 --   repeated a number of times.
 data Group a = Group {-# UNPACK #-} !Int a deriving Eq
 
+instance Binary a => Binary (Group a) where
+  put (Group n x) = put n *> put x
+  get = liftA2 Group get get
+
 -- | Build a group by repeating the given element a number of times.
 --   If the given number is less or equal to 0, 'Nothing' is returned.
 buildGroup :: Int -> a -> Maybe (Group a)
@@ -174,6 +180,10 @@
   toList = toList
 #endif
 
+instance Binary a => Binary (Grouped a) where
+  put (Grouped xs) = put xs
+  get = Grouped <$> get
+
 headGroup :: Eq a => [a] -> Maybe (Group a, [a])
 headGroup [] = Nothing
 headGroup (a:as) = Just (Group n a, r)
@@ -458,7 +468,7 @@
 -- | Apply a function with results residing in an applicative functor to every
 --   element in a grouped list.
 traverseGrouped :: (Applicative f, Eq b) => (a -> f b) -> Grouped a -> f (Grouped b)
-traverseGrouped f = foldr (\x fxs -> mappend <$> (point <$> f x) <*> fxs) (pure mempty)
+traverseGrouped f = foldr (\x fxs -> liftA2 mappend (point <$> f x) fxs) (pure mempty)
 
 -- | Similar to 'traverseGrouped', but instead of applying a function to every element
 --   of the list, it is applied to groups of consecutive elements. You might return more
diff --git a/grouped-list.cabal b/grouped-list.cabal
--- a/grouped-list.cabal
+++ b/grouped-list.cabal
@@ -1,5 +1,5 @@
 name:                grouped-list
-version:             0.2.1.5
+version:             0.2.2.0
 synopsis:            Grouped lists. Equal consecutive elements are grouped.
 description:
   Grouped lists work like regular lists, except for two conditions:
@@ -32,6 +32,7 @@
     , containers
     , pointed
     , deepseq
+    , binary
   ghc-options: -O2 -Wall
   -- compatibility
   if impl(ghc < 7.10)
