diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # ChangeLog for shakespeare
 
+### 2.0.22
+
+* Add `stextFile` to `Text.Shakespeare.Text`, which can be used to produce `Text` directly in the same way `shamletFile` can be used to produce `Html` directly. [#240](https://github.com/yesodweb/shakespeare/pull/240)
+
 ### 2.0.21
 
 * Support for GHC 8.8
diff --git a/Text/Shakespeare/Text.hs b/Text/Shakespeare/Text.hs
--- a/Text/Shakespeare/Text.hs
+++ b/Text/Shakespeare/Text.hs
@@ -28,6 +28,7 @@
     , ToText (..)
     , renderTextUrl
     , stext
+    , stextFile
     , text
     , textFile
     , textFileDebug
@@ -78,15 +79,25 @@
   , unwrap = unWrapExp
   }
 
-
-stext, lt, st, text, lbt, sbt :: QuasiQuoter
-stext = 
+-- | "Simple text" quasi-quoter. May only be used to generate expressions.
+--
+-- Generated expressions have type 'TL.Text'.
+--
+-- @
+-- >>> do let x = "world"
+--        'Data.Text.Lazy.IO.putStrLn' ['stext'|Hello, #{x}!|]
+-- Hello, world!
+-- @
+stext :: QuasiQuoter
+stext =
   QuasiQuoter { quoteExp = \s -> do
     rs <- settings
     render <- [|toLazyText|]
     rendered <- shakespeareFromString rs { justVarInterpolation = True } s
     return (render `AppE` rendered)
     }
+
+lt, st, text, lbt, sbt :: QuasiQuoter
 lt = stext
 
 st = 
@@ -138,6 +149,14 @@
 textFileReload fp = do
     rs <- settings
     shakespeareFileReload rs fp
+
+-- | Like 'stext', but reads an external file at compile-time.
+--
+-- @since 2.0.22
+stextFile :: FilePath -> Q Exp
+stextFile fp = do
+  rs <- settings
+  [|toLazyText $(shakespeareFile rs { justVarInterpolation = True } fp)|]
 
 -- | codegen is designed for generating Yesod code, including templates
 -- So it uses different interpolation characters that won't clash with templates.
diff --git a/shakespeare.cabal b/shakespeare.cabal
--- a/shakespeare.cabal
+++ b/shakespeare.cabal
@@ -1,5 +1,5 @@
 name:            shakespeare
-version:         2.0.21
+version:         2.0.22
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
diff --git a/test/Text/Shakespeare/TextSpec.hs b/test/Text/Shakespeare/TextSpec.hs
--- a/test/Text/Shakespeare/TextSpec.hs
+++ b/test/Text/Shakespeare/TextSpec.hs
@@ -68,6 +68,9 @@
       writeFile "test/texts/external2.text" "var #{var} = 1;"
       -}
 
+    it "stextFile" $ do
+      let var = "somevar"
+      TL.toStrict $(stextFile "test/texts/external2.text") @=? pack "var somevar = 2;"
 
     it "text module names" $
       let foo = "foo"
