diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+### 3.9.6 [2022.01.14]
+* `text-show` no longer depends on `integer-gmp` when built with GHC 9.0 or
+  later. When building with older versions of GHC, the `integer-gmp` dependency
+  can be toggled by disabling the `integer-gmp` `cabal` flag.
+
 ### 3.9.5 [2022.01.03]
 * Work around a GHC 8.0–specific issue in which GHC's simplifier ticks would
   become exhausted, causing compilation to fail.
diff --git a/src/TextShow/Numeric/Natural.hs b/src/TextShow/Numeric/Natural.hs
--- a/src/TextShow/Numeric/Natural.hs
+++ b/src/TextShow/Numeric/Natural.hs
@@ -18,19 +18,17 @@
 module TextShow.Numeric.Natural () where
 
 #if MIN_VERSION_base(4,15,0)
+import GHC.Exts (Word(..))
 import GHC.Num (integerFromNatural)
 import GHC.Num.Natural (Natural(..))
-#elif MIN_VERSION_base(4,8,0)
+#elif MIN_VERSION_base(4,8,0) && defined(MIN_VERSION_integer_gmp)
+import GHC.Exts (Word(..))
 import GHC.Integer.GMP.Internals (Integer(..))
 import GHC.Natural (Natural(..))
 #else
 import Numeric.Natural.Compat (Natural)
 #endif
 
-#if MIN_VERSION_base(4,8,0)
-import GHC.Exts (Word(..))
-#endif
-
 import TextShow.Classes (TextShow(..))
 import TextShow.Data.Integral ()
 
@@ -39,7 +37,7 @@
 #if MIN_VERSION_base(4,15,0)
     showbPrec p (NS w) = showbPrec p (W# w)
     showbPrec p n      = showbPrec p (integerFromNatural n)
-#elif MIN_VERSION_base(4,8,0)
+#elif MIN_VERSION_base(4,8,0) && defined(MIN_VERSION_integer_gmp)
     showbPrec _ (NatS# w#)  = showb $ W# w#
     showbPrec p (NatJ# bn)  = showbPrec p $ Jp# bn
 #else
diff --git a/text-show.cabal b/text-show.cabal
--- a/text-show.cabal
+++ b/text-show.cabal
@@ -1,5 +1,5 @@
 name:                text-show
-version:             3.9.5
+version:             3.9.6
 synopsis:            Efficient conversion of values into Text
 description:         @text-show@ offers a replacement for the @Show@ typeclass intended
                      for use with @Text@ instead of @String@s. This package was created
@@ -51,7 +51,7 @@
                    , GHC == 8.6.5
                    , GHC == 8.8.4
                    , GHC == 8.10.7
-                   , GHC == 9.0.1
+                   , GHC == 9.0.2
                    , GHC == 9.2.1
 extra-source-files:  CHANGELOG.md, README.md, include/*.h
 cabal-version:       >=1.10
@@ -75,6 +75,13 @@
                        a different version of Data.Functor.Classes.
   default:             True
 
+flag integer-gmp
+  description:         When building with a version of GHC older than 9.0,
+                       depend on the @integer-gmp@ library. You can disable
+                       this if you do not wish to link against GMP, but at the
+                       expense of having a slower @TextShow Natural@ instance.
+  default:             True
+
 library
   exposed-modules:     TextShow
                        TextShow.Control.Applicative
@@ -162,7 +169,6 @@
                      , containers            >= 0.1    && < 0.7
                      , generic-deriving      >= 1.14.1 && < 2
                      , ghc-prim
-                     , integer-gmp
                      , text                  >= 0.11.1 && < 2.1
                      , th-abstraction        >= 0.4    && < 0.5
                      , th-lift               >= 0.7.6  && < 1
@@ -185,6 +191,11 @@
     cpp-options:       "-DNEW_FUNCTOR_CLASSES"
   else
     build-depends:     transformers          == 0.4.*
+
+  -- integer-gmp is only needed on pre-9.0 versions of GHC, as GHC 9.0+ add
+  -- enough functionality to base to avoid the use of integer-gmp entirely.
+  if !impl(ghc >= 9.0) && flag(integer-gmp)
+    build-depends:     integer-gmp
 
   hs-source-dirs:      src, shared
   default-language:    Haskell2010
