diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,10 @@
 # Changelog
 
+- 0.8.3.0 (2023-09-25)
+    * Add `ToMarkup` and `ToValue` instances for `NonEmpty Char`
+    * Bump `bytestring` upper bound to 0.13
+    * Bump `text` upper bound to 2.1
+
 - 0.8.2.8 (2021-03-04)
     * Bump `base` upper bound to 4.16
     * Bump `tasty` upper bound to 1.5
diff --git a/blaze-markup.cabal b/blaze-markup.cabal
--- a/blaze-markup.cabal
+++ b/blaze-markup.cabal
@@ -1,5 +1,5 @@
 Name:         blaze-markup
-Version:      0.8.2.8
+Version:      0.8.3.0
 Homepage:     http://jaspervdj.be/blaze
 Bug-Reports:  http://github.com/jaspervdj/blaze-markup/issues
 License:      BSD3
@@ -17,11 +17,21 @@
 
 Build-type:    Simple
 Cabal-version: >= 1.10
-Tested-with:   GHC == 7.8.4, GHC == 7.10.3,
-               GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4,
-               GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.4,
-               GHC == 9.0.1
 
+Tested-with:
+  GHC == 9.6.2
+  GHC == 9.4.5
+  GHC == 9.2.8
+  GHC == 9.0.2
+  GHC == 8.10.7
+  GHC == 8.8.4
+  GHC == 8.6.5
+  GHC == 8.4.4
+  GHC == 8.2.2
+  GHC == 8.0.2
+  GHC == 7.10.3
+  GHC == 7.8.4
+
 Extra-source-files:
   CHANGELOG
 
@@ -39,10 +49,10 @@
     Text.Blaze.Renderer.Utf8
 
   Build-depends:
-    base          >= 4    && < 4.16,
+    base          >= 4    && < 5,
     blaze-builder >= 0.3  && < 0.5,
-    text          >= 0.10 && < 1.3,
-    bytestring    >= 0.9  && < 0.12
+    text          >= 0.10 && < 2.1,
+    bytestring    >= 0.9  && < 0.13
 
 Test-suite blaze-markup-tests
   Type:             exitcode-stdio-1.0
@@ -62,17 +72,18 @@
     Text.Blaze.Tests.Util
 
   Build-depends:
-    HUnit            >= 1.2  && < 1.7,
-    QuickCheck       >= 2.7  && < 2.15,
-    containers       >= 0.3  && < 0.7,
-    tasty            >= 1.0  && < 1.5,
-    tasty-hunit      >= 0.10 && < 0.11,
-    tasty-quickcheck >= 0.10 && < 0.11,
     -- Copied from regular dependencies...
-    base          >= 4    && < 4.16,
-    blaze-builder >= 0.3  && < 0.5,
-    text          >= 0.10 && < 1.3,
-    bytestring    >= 0.9  && < 0.12
+    base
+    , blaze-builder
+    , text
+    , bytestring
+    -- Extra dependencies
+    , HUnit            >= 1.2  && < 1.7
+    , QuickCheck       >= 2.7  && < 2.15
+    , containers       >= 0.3  && < 0.7
+    , tasty            >= 1.0  && < 1.5
+    , tasty-hunit      >= 0.10 && < 0.11
+    , tasty-quickcheck >= 0.10 && < 0.11
 
 Source-repository head
   Type:     git
diff --git a/src/Text/Blaze.hs b/src/Text/Blaze.hs
--- a/src/Text/Blaze.hs
+++ b/src/Text/Blaze.hs
@@ -84,7 +84,7 @@
     , (!)
     , (!?)
 
-      -- * Modifiying Markup trees
+      -- * Modifying Markup trees
     , contents
     ) where
 
@@ -94,6 +94,9 @@
 #if MIN_VERSION_base(4,8,0)
 import           Numeric.Natural        (Natural)
 #endif
+#if MIN_VERSION_base(4,9,0)
+import           Data.List.NonEmpty     (NonEmpty (..))
+#endif
 
 import           Data.Text              (Text)
 import qualified Data.Text.Lazy         as LT
@@ -280,3 +283,13 @@
 instance ToValue Word64 where
     toValue = stringValue . show
     {-# INLINE toValue #-}
+
+-- Non-empty strings
+#if MIN_VERSION_base(4,9,0)
+instance ToMarkup (NonEmpty Char) where
+    toMarkup           (x :| xs) = string           (x : xs)
+    preEscapedToMarkup (x :| xs) = preEscapedString (x : xs)
+
+instance ToValue (NonEmpty Char) where
+    toValue (x :| xs) = stringValue (x : xs)
+#endif
