diff --git a/ascii.cabal b/ascii.cabal
--- a/ascii.cabal
+++ b/ascii.cabal
@@ -1,7 +1,7 @@
 cabal-version: 3.0
 
 name: ascii
-version: 1.5.2.0
+version: 1.5.3.0
 synopsis: The ASCII character set and encoding
 category: Data, Text
 
@@ -34,7 +34,7 @@
       , ascii-case == 1.0.1.*
       , ascii-numbers == 1.1.0.*
       , ascii-predicates == 1.0.1.*
-      , ascii-superset == 1.2.5.*
+      , ascii-superset == 1.2.6.*
       , ascii-th == 1.2.0.*
       , base ^>= 4.14 || ^>= 4.15 || ^>= 4.16 || ^>= 4.17
       , bytestring ^>= 0.10.12 || ^>= 0.11
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,14 @@
+### 1.5.3.0 (2023-02-07)
+
+Raise `ascii-superset` to `1.2.6`
+
+Added class `StringSupersetConversion` and the following function:
+
+```haskell
+convertRefinedString ::
+    StringSupersetConversion a b => ASCII a -> ASCII b
+```
+
 ### 1.5.2.0 (2023-01-25)
 
 New functions: `asciiByteStringToText` and `asciiByteStringToTextLazy`
diff --git a/library/ASCII.hs b/library/ASCII.hs
--- a/library/ASCII.hs
+++ b/library/ASCII.hs
@@ -99,6 +99,7 @@
     {- ** Lift -} {- $lift -} lift,
     {- ** Convert -} {- $supersetConversions -}
     convertCharMaybe, convertCharOrFail, convertStringMaybe, convertStringOrFail,
+    convertRefinedString,
     {- ** Integral strings -} {- $numbers -}
     showIntegralDecimal, showIntegralHexadecimal,
     readIntegralDecimal, readIntegralHexadecimal,
@@ -109,7 +110,7 @@
     digitString, hexCharString,
 
     {- * Classes -}
-    {- ** Supersets of ASCII -} CharSuperset, StringSuperset, Lift,
+    {- ** Supersets of ASCII -} CharSuperset, StringSuperset, StringSupersetConversion, Lift,
     {- ** Equivalents to ASCII -} CharIso, StringIso,
     {- ** Supersets of numeric characters -}
     DigitSuperset, DigitStringSuperset, HexCharSuperset, HexStringSuperset,
@@ -130,6 +131,7 @@
 import ASCII.QuasiQuoters (char, string, caseless, lower, upper)
 import ASCII.Refinement (ASCII, validateChar, validateString)
 import ASCII.Superset (CharSuperset, StringSuperset)
+import ASCII.SupersetConversion (StringSupersetConversion)
 
 import Control.Monad ((>=>))
 import Control.Monad.Fail (MonadFail)
@@ -152,6 +154,7 @@
 import qualified ASCII.Lift
 import qualified ASCII.Predicates
 import qualified ASCII.Superset
+import qualified ASCII.SupersetConversion as SupersetConversion
 
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy as LBS
@@ -785,3 +788,9 @@
 
 toHexCharMaybe :: HexCharSuperset char => char -> Maybe HexChar
 toHexCharMaybe = ASCII.Hexadecimal.toHexCharMaybe
+
+{-| For example, this function can convert @ASCII ByteString@
+    to @ASCII Text@ and vice versa -}
+convertRefinedString ::
+    StringSupersetConversion a b => ASCII a -> ASCII b
+convertRefinedString = SupersetConversion.convertRefinedString
