diff --git a/Data/Text.hs b/Data/Text.hs
index 8b32b02c5370da56e1489317152c7a4c87b66862..643b11609872552fbdbcea4593d641ad89b890d2 100644
--- a/Data/Text.hs
+++ b/Data/Text.hs
@@ -219,7 +219,7 @@ import Control.Exception (assert)
 import Data.Char (isSpace)
 import Data.Data (Data(gfoldl, toConstr, gunfold, dataTypeOf), constrIndex,
                   Constr, mkConstr, DataType, mkDataType, Fixity(Prefix))
-import Control.Monad (foldM)
+import Control.Monad (foldM, (=<<))
 import Control.Monad.ST (ST)
 import qualified Data.Text.Array as A
 import qualified Data.List as L
@@ -255,6 +255,7 @@ import qualified GHC.Exts as Exts
 #endif
 import qualified Language.Haskell.TH.Lib as TH
 import qualified Language.Haskell.TH.Syntax as TH
+import qualified Language.Haskell.TH.Lift as TH
 #if MIN_VERSION_base(4,7,0)
 import Text.Printf (PrintfArg, formatArg, formatString)
 #endif
@@ -431,7 +432,7 @@ instance Data Text where
 instance TH.Lift Text where
   lift = TH.appE (TH.varE 'pack) . TH.stringE . unpack
 #if MIN_VERSION_template_haskell(2,16,0)
-  liftTyped = TH.unsafeTExpCoerce . TH.lift
+  liftTyped x = TH.typecheck =<< TH.lift x
 #endif
 
 #if MIN_VERSION_base(4,7,0)
diff --git a/Data/Text/Lazy.hs b/Data/Text/Lazy.hs
index be893c4cd960ffcb9b87e51984de184e754c1b8c..9e1309451ec4ac15a8d604b9210cb4b66ae940c6 100644
--- a/Data/Text/Lazy.hs
+++ b/Data/Text/Lazy.hs
@@ -211,7 +211,7 @@ module Data.Text.Lazy
 import Prelude (Char, Bool(..), Maybe(..), String,
                 Eq(..), Ord(..), Ordering(..), Read(..), Show(..),
                 (&&), (||), (+), (-), (.), ($), (++),
-                error, flip, fmap, fromIntegral, not, otherwise, quot)
+                error, flip, fmap, fromIntegral, not, otherwise, quot, (=<<))
 import qualified Prelude as P
 import Control.DeepSeq (NFData(..))
 import Data.Int (Int64)
@@ -247,6 +247,7 @@ import qualified GHC.Base as GHC
 import qualified GHC.Exts as Exts
 #endif
 import GHC.Prim (Addr#)
+import qualified Language.Haskell.TH as TH
 import qualified Language.Haskell.TH.Lib as TH
 import qualified Language.Haskell.TH.Syntax as TH
 #if MIN_VERSION_base(4,7,0)
@@ -416,7 +417,7 @@ instance Data Text where
 instance TH.Lift Text where
   lift = TH.appE (TH.varE 'pack) . TH.stringE . unpack
 #if MIN_VERSION_template_haskell(2,16,0)
-  liftTyped = TH.unsafeTExpCoerce . TH.lift
+  liftTyped x = TH.typecheck =<< TH.lift x
 #endif
 
 #if MIN_VERSION_base(4,7,0)