diff --git a/Text/Blaze.hs b/Text/Blaze.hs
--- a/Text/Blaze.hs
+++ b/Text/Blaze.hs
@@ -52,6 +52,7 @@
     , string
     , preEscapedString
     , unsafeByteString
+    , unsafeLazyByteString
 
       -- * Creating tags.
     , textTag
@@ -66,6 +67,7 @@
     , stringValue
     , preEscapedStringValue
     , unsafeByteStringValue
+    , unsafeLazyByteStringValue
 
       -- * Setting attributes
     , (!)
diff --git a/Text/Blaze/Internal.hs b/Text/Blaze/Internal.hs
--- a/Text/Blaze/Internal.hs
+++ b/Text/Blaze/Internal.hs
@@ -31,6 +31,7 @@
     , string
     , preEscapedString
     , unsafeByteString
+    , unsafeLazyByteString
 
       -- * Converting values to tags.
     , textTag
@@ -44,6 +45,7 @@
     , stringValue
     , preEscapedStringValue
     , unsafeByteStringValue
+    , unsafeLazyByteStringValue
 
       -- * Setting attributes
     , (!)
@@ -55,19 +57,20 @@
 import Data.Monoid (Monoid, mappend, mempty, mconcat)
 
 import Data.ByteString.Char8 (ByteString)
-import qualified Data.ByteString as S
 import Data.Text (Text)
+import Data.Typeable (Typeable)
+import GHC.Exts (IsString (..))
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
 import qualified Data.Text as T
 import qualified Data.Text.Encoding as T
 import qualified Data.Text.Lazy as LT
-import GHC.Exts (IsString (..))
-import Data.Typeable (Typeable)
 
 -- | A static string that supports efficient output to all possible backends.
 --
 data StaticString = StaticString
     { getString         :: String -> String  -- ^ Appending haskell string
-    , getUtf8ByteString :: S.ByteString      -- ^ UTF-8 encoded bytestring
+    , getUtf8ByteString :: B.ByteString      -- ^ UTF-8 encoded bytestring
     , getText           :: Text              -- ^ Text value
     }
 
@@ -88,7 +91,7 @@
     -- | A Text value
     | Text Text
     -- | An encoded bytestring
-    | ByteString S.ByteString
+    | ByteString B.ByteString
     -- | A pre-escaped string
     | PreEscaped ChoiceString
     -- | External data in style/script tags, should be checked for validity
@@ -274,6 +277,14 @@
 unsafeByteString = Content . ByteString
 {-# INLINE unsafeByteString #-}
 
+-- | Insert a lazy 'BL.ByteString'. See 'unsafeByteString' for reasons why this
+-- is an unsafe operation.
+--
+unsafeLazyByteString :: BL.ByteString  -- ^ Value to insert
+                     -> Html           -- ^ Resulting HTML fragment
+unsafeLazyByteString = mconcat . map unsafeByteString . BL.toChunks
+{-# INLINE unsafeLazyByteString #-}
+
 -- | Create a 'Tag' from some 'Text'.
 --
 textTag :: Text  -- ^ Text to create a tag from
@@ -335,6 +346,15 @@
 unsafeByteStringValue :: ByteString      -- ^ ByteString value
                       -> AttributeValue  -- ^ Resulting attribute value
 unsafeByteStringValue = AttributeValue . ByteString
+{-# INLINE unsafeByteStringValue #-}
+
+-- | Create an attribute value from a lazy 'BL.ByteString'. See
+-- 'unsafeByteString' for reasons why this might not be a good idea.
+--
+unsafeLazyByteStringValue :: BL.ByteString   -- ^ ByteString value
+                          -> AttributeValue  -- ^ Resulting attribute value
+unsafeLazyByteStringValue = mconcat . map unsafeByteStringValue . BL.toChunks
+{-# INLINE unsafeLazyByteStringValue #-}
 
 class Attributable h where
     -- | Apply an attribute to an element.
diff --git a/blaze-html.cabal b/blaze-html.cabal
--- a/blaze-html.cabal
+++ b/blaze-html.cabal
@@ -7,7 +7,7 @@
 -- The package version. See the Haskell package versioning policy
 -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
 -- standards guiding when and how versions should be incremented.
-Version:             0.4.1.2
+Version:             0.4.1.3
 
 -- A short (one-line) description of the package.
 Synopsis:            A blazingly fast HTML combinator library.
