diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Changelog
 
+## 1.1.0.1 - 2021-11-13
+
+### Changed
+
+  - Support aeson-2.0 (thanks to Simon Jakobi)
+
 ## 1.1.0.0 - 2020-06-25
 
 ### Changed
diff --git a/aeson-yaml.cabal b/aeson-yaml.cabal
--- a/aeson-yaml.cabal
+++ b/aeson-yaml.cabal
@@ -1,7 +1,7 @@
 cabal-version: 1.12
 
 name:           aeson-yaml
-version:        1.1.0.0
+version:        1.1.0.1
 homepage:       https://github.com/clovyr/aeson-yaml
 bug-reports:    https://github.com/clovyr/aeson-yaml/issues
 author:         Patrick Nielsen
@@ -37,9 +37,9 @@
   exposed-modules:
       Data.Aeson.Yaml
   build-depends:
-      aeson >= 0.4.0.0 && < 1.6
+      aeson >= 0.4.0.0 && < 2.1
     , base >= 4.8.2.0 && < 5
-    , bytestring >= 0.10.4.0 && < 0.11
+    , bytestring >= 0.10.4.0 && < 0.12
     , text >= 0.1 && < 1.3
     , unordered-containers >= 0.1.0.0 && < 0.3
     , vector >= 0.1 && < 0.13
@@ -61,10 +61,10 @@
     -- , hedgehog-gen-json
     , string-qq
     , tasty
-    , tasty-discover
     , tasty-hunit
     , unordered-containers
     , yaml
+  build-tool-depends: tasty-discover:tasty-discover
   type: exitcode-stdio-1.0
   default-language: Haskell2010
 
diff --git a/src/Data/Aeson/Yaml.hs b/src/Data/Aeson/Yaml.hs
--- a/src/Data/Aeson/Yaml.hs
+++ b/src/Data/Aeson/Yaml.hs
@@ -8,6 +8,7 @@
 
 This module is meant to be imported qualified.
 -}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Data.Aeson.Yaml
@@ -25,14 +26,22 @@
 import qualified Data.ByteString.Lazy as ByteString.Lazy
 import qualified Data.ByteString.Short as ByteString.Short
 import Data.Char (isAlpha, isDigit)
-import qualified Data.HashMap.Strict as HashMap
-import Data.List (intersperse, sortOn)
+import Data.List (intersperse)
 import Data.Monoid ((<>), mconcat, mempty)
 import qualified Data.Text as Text
 import Data.Text (Text)
 import qualified Data.Text.Encoding as Text.Encoding
 import qualified Data.Vector as Vector
 
+#if MIN_VERSION_aeson(2,0,0)
+import qualified Data.Aeson.Key as Key
+import qualified Data.Aeson.KeyMap as KeyMap
+import Data.Bifunctor (first)
+#else
+import qualified Data.HashMap.Strict as HashMap
+import Data.List (sortOn)
+#endif
+
 b :: ByteString -> Builder
 b = ByteString.Builder.byteString
 
@@ -81,15 +90,15 @@
 encodeBuilder :: Bool -> Bool -> Int -> Data.Aeson.Value -> Builder
 encodeBuilder alwaysQuote newlineBeforeObject level value =
   case value of
-    Object hm
-      | null hm -> bs "{}"
+    Object km
+      | null km -> bs "{}"
       | otherwise ->
         mconcat $
         (if newlineBeforeObject
            then (prefix :)
            else id) $
         intersperse prefix $
-        map (keyValue level) (sortOn fst $ HashMap.toList hm)
+        map (keyValue level) (objectToAscList km)
       where prefix = bs "\n" <> indent level
     Array vec
       | null vec -> bs "[]"
@@ -173,3 +182,10 @@
       case ls of
         (line:_) -> " " `Text.isPrefixOf` line
         _ -> False
+
+objectToAscList :: Object -> [(Text, Value)]
+#if MIN_VERSION_aeson(2,0,0)
+objectToAscList = map (first Key.toText) . KeyMap.toAscList
+#else
+objectToAscList = sortOn fst . HashMap.toList
+#endif
diff --git a/test/Test/Data/Aeson/Yaml.hs b/test/Test/Data/Aeson/Yaml.hs
--- a/test/Test/Data/Aeson/Yaml.hs
+++ b/test/Test/Data/Aeson/Yaml.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE QuasiQuotes #-}
@@ -7,10 +8,15 @@
 import qualified Data.Aeson
 import qualified Data.ByteString.Lazy
 import Data.Either (fromRight)
-import qualified Data.HashMap.Strict as HashMap
 import Data.String.QQ (s)
 import qualified Data.Yaml
 
+#if MIN_VERSION_aeson(2,0,0)
+import qualified Data.Aeson.KeyMap as KeyMap
+#else
+import qualified Data.HashMap.Strict as HashMap
+#endif
+
 -- import Hedgehog
 -- import Hedgehog.Gen
 -- import Hedgehog.Gen.JSON (genJSONValue, sensibleRanges)
@@ -243,7 +249,14 @@
     }
 
 foo :: Data.Aeson.Value
-foo = Data.Aeson.Object $ HashMap.fromList [("foo", "bar")]
+foo =
+  Data.Aeson.Object $
+#if MIN_VERSION_aeson(2,0,0)
+    KeyMap.fromList
+#else
+    HashMap.fromList
+#endif
+      [("foo", "bar")]
 
 test_testCases :: TestTree
 test_testCases = testGroup "Test Cases" $ map mkTestCase testCases
