diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.2
+
+- Support `aeson-2.0.0.0`
+
 ## 1.0.1
 
 - Add instances for `time-1.11` types: `Month`, `Quarter`, `QuarterOfYear`
diff --git a/binary-instances.cabal b/binary-instances.cabal
--- a/binary-instances.cabal
+++ b/binary-instances.cabal
@@ -1,5 +1,5 @@
 name:               binary-instances
-version:            1.0.1
+version:            1.0.2
 synopsis:           Orphan instances for binary
 description:
   `binary-instances` defines orphan instances for types in some popular packages.
@@ -22,7 +22,8 @@
    || ==8.4.4
    || ==8.6.5
    || ==8.8.4
-   || ==8.10.2
+   || ==8.10.4
+   || ==9.0.1
 
 extra-source-files: CHANGELOG.md
 
@@ -34,8 +35,8 @@
   default-language: Haskell2010
   hs-source-dirs:   src
   build-depends:
-      aeson                    >=0.7.0.6   && <1.6
-    , base                     >=4.6.0.1   && <4.15
+      aeson                    >=0.7.0.6   && <1.6 || >=2.0.0.0 && <2.1
+    , base                     >=4.6.0.1   && <4.16
     , binary                   >=0.5.1.1   && <0.8.9
     , binary-orphans           >=1.0.1     && <1.1
     , case-insensitive         >=1.2.0.4   && <1.2.2
@@ -72,13 +73,14 @@
     , base
     , binary
     , binary-instances
+    , bytestring
     , case-insensitive
     , hashable
     , QuickCheck            >=2.13.1   && <2.15
     , quickcheck-instances  >=0.3.25   && <0.4
     , scientific
     , tagged
-    , tasty                 >=0.10.1.2 && <1.4
+    , tasty                 >=0.10.1.2 && <1.5
     , tasty-quickcheck      >=0.8.3.2  && <0.11
     , text
     , time-compat
diff --git a/src/Data/Binary/Instances/Aeson.hs b/src/Data/Binary/Instances/Aeson.hs
--- a/src/Data/Binary/Instances/Aeson.hs
+++ b/src/Data/Binary/Instances/Aeson.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Data.Binary.Instances.Aeson where
 
@@ -11,6 +12,11 @@
 
 import qualified Data.Aeson as A
 
+#if MIN_VERSION_aeson(2,0,0)
+import qualified Data.Aeson.Key as Key
+import qualified Data.Aeson.KeyMap as KM
+#endif
+
 instance Binary A.Value where
     get = do
         t <- get :: Get Int
@@ -29,3 +35,13 @@
     put (A.Number v) = put (3 :: Int) >> put v
     put (A.Bool v)   = put (4 :: Int) >> put v
     put A.Null       = put (5 :: Int)
+
+#if MIN_VERSION_aeson(2,0,0)
+instance Binary Key.Key where
+    get = Key.fromText <$> get
+    put = put . Key.toText
+
+instance Binary v => Binary (KM.KeyMap v) where
+    get = fmap KM.fromList get
+    put = put . KM.toList
+#endif
diff --git a/test/Tests.hs b/test/Tests.hs
--- a/test/Tests.hs
+++ b/test/Tests.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                 #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 module Main (main) where
 
@@ -10,6 +11,7 @@
 import Test.Tasty            (TestTree, defaultMain, testGroup)
 import Test.Tasty.QuickCheck (testProperty)
 
+import Data.ByteString      (ByteString)
 import Data.CaseInsensitive (CI)
 import Data.HashMap.Lazy    (HashMap)
 import Data.HashSet         (HashSet)
@@ -54,7 +56,11 @@
     , roundtripProperty (undefined :: Time.Quarter)
     , roundtripProperty (undefined :: Time.Month)
     -- case-insensitive & text
+#if __GLASGOW_HASKELL__ <807
+    -- https://github.com/haskell/text/issues/227
     , roundtripProperty (undefined :: (CI Text))
+#endif
+    , roundtripProperty (undefined :: (CI ByteString))
     -- semigroups / monoids
     , roundtripProperty (undefined :: (Sum Int))
     -- tagged
