diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+0.17.3 [2023.08.06]
+-------------------
+* Remove `mtl` dependency in favor `transformers`, as `bytes` was only using
+  `mtl` for its `transformers` re-exports.
+
 0.17.2 [2022.05.07]
 -------------------
 * Allow building with `mtl-2.3.*` and `transformers-0.6.*`.
diff --git a/bytes.cabal b/bytes.cabal
--- a/bytes.cabal
+++ b/bytes.cabal
@@ -1,6 +1,6 @@
 name:          bytes
 category:      Data, Serialization
-version:       0.17.2
+version:       0.17.3
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -22,7 +22,9 @@
              , GHC == 8.8.4
              , GHC == 8.10.7
              , GHC == 9.0.2
-             , GHC == 9.2.2
+             , GHC == 9.2.7
+             , GHC == 9.4.5
+             , GHC == 9.6.2
 synopsis:      Sharing code for serialization between binary and cereal
 description:   Sharing code for serialization between binary and cereal.
 
@@ -43,13 +45,12 @@
     base                      >= 4.5      && < 5,
     binary                    >= 0.5.1    && < 0.9,
     binary-orphans            >= 1.0.1    && < 1.1,
-    bytestring                >= 0.9      && < 0.12,
+    bytestring                >= 0.9      && < 0.13,
     cereal                    >= 0.5.2    && < 0.6,
     containers                >= 0.3      && < 1,
     hashable                  >= 1.0.1.1  && < 1.5,
-    mtl                       >= 2.0      && < 2.4,
     text                      >= 0.2      && < 2.1,
-    time                      >= 1.2      && < 1.12,
+    time                      >= 1.2      && < 1.13,
     transformers              >= 0.2      && < 0.7,
     transformers-compat       >= 0.6.5    && < 1,
     unordered-containers      >= 0.2      && < 0.3,
diff --git a/src/Data/Bytes/Get.hs b/src/Data/Bytes/Get.hs
--- a/src/Data/Bytes/Get.hs
+++ b/src/Data/Bytes/Get.hs
@@ -32,16 +32,18 @@
 
 #if __GLASGOW_HASKELL__ < 710
 import Control.Applicative
+import Data.Monoid (Monoid(..))
 #endif
 import Control.Monad (liftM, unless)
-import Control.Monad.Reader (ReaderT(..))
+import Control.Monad.Trans.Class (MonadTrans(..))
 import Control.Monad.Trans.Except as Except
-import Control.Monad.RWS.Lazy as Lazy
-import Control.Monad.RWS.Strict as Strict
-import Control.Monad.State.Lazy as Lazy
-import Control.Monad.State.Strict as Strict
-import Control.Monad.Writer.Lazy as Lazy
-import Control.Monad.Writer.Strict as Strict
+import Control.Monad.Trans.Reader (ReaderT(..))
+import Control.Monad.Trans.RWS.Lazy as Lazy
+import Control.Monad.Trans.RWS.Strict as Strict
+import Control.Monad.Trans.State.Lazy as Lazy
+import Control.Monad.Trans.State.Strict as Strict
+import Control.Monad.Trans.Writer.Lazy as Lazy
+import Control.Monad.Trans.Writer.Strict as Strict
 import qualified Data.Binary.Get as B
 import qualified Data.ByteString.Lazy as Lazy
 import qualified Data.ByteString as Strict
diff --git a/src/Data/Bytes/Put.hs b/src/Data/Bytes/Put.hs
--- a/src/Data/Bytes/Put.hs
+++ b/src/Data/Bytes/Put.hs
@@ -28,15 +28,17 @@
 
 #if __GLASGOW_HASKELL__ < 710
 import Control.Applicative
+import Data.Monoid (Monoid(..))
 #endif
-import Control.Monad.Reader
+import Control.Monad.Trans.Class (MonadTrans(..))
 import Control.Monad.Trans.Except as Except
-import Control.Monad.RWS.Lazy as Lazy
-import Control.Monad.RWS.Strict as Strict
-import Control.Monad.State.Lazy as Lazy
-import Control.Monad.State.Strict as Strict
-import Control.Monad.Writer.Lazy as Lazy
-import Control.Monad.Writer.Strict as Strict
+import Control.Monad.Trans.Reader (ReaderT(..))
+import Control.Monad.Trans.RWS.Lazy as Lazy
+import Control.Monad.Trans.RWS.Strict as Strict
+import Control.Monad.Trans.State.Lazy as Lazy
+import Control.Monad.Trans.State.Strict as Strict
+import Control.Monad.Trans.Writer.Lazy as Lazy
+import Control.Monad.Trans.Writer.Strict as Strict
 import qualified Data.Binary.Put as B
 import Data.ByteString as Strict
 import Data.ByteString.Lazy as Lazy
