diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## [0.3.1.0] - 2024-02-29
+
+- Add `Data` instance to `NonEmptyText`.
+
 ## [0.3.0.1] - 2024-01-03
 
 - Add support for GHC 9.6
diff --git a/src/Data/StringVariants/NonEmptyText/Internal.hs b/src/Data/StringVariants/NonEmptyText/Internal.hs
--- a/src/Data/StringVariants/NonEmptyText/Internal.hs
+++ b/src/Data/StringVariants/NonEmptyText/Internal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE UndecidableInstances #-}
@@ -14,6 +15,7 @@
 import Data.Aeson (FromJSON (..), ToJSON, withText)
 import Data.ByteString
 import Data.Coerce
+import Data.Data (Data)
 import Data.MonoTraversable
 import Data.Proxy
 import Data.Sequences
@@ -30,7 +32,7 @@
 
 -- | Non Empty Text, requires the input is between 1 and @n@ chars and not just whitespace.
 newtype NonEmptyText (n :: Nat) = NonEmptyText Text
-  deriving stock (Generic, Show, Read, Lift)
+  deriving stock (Data, Generic, Show, Read, Lift)
   deriving newtype (Eq, Ord, ToJSON, MonoFoldable)
 
 type instance Element (NonEmptyText _n) = Char
diff --git a/string-variants.cabal b/string-variants.cabal
--- a/string-variants.cabal
+++ b/string-variants.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           string-variants
-version:        0.3.0.1
+version:        0.3.1.0
 synopsis:       Constrained text newtypes
 description:    See README at <https://github.com/MercuryTechnologies/string-variants#readme>.
 category:       Data
