diff --git a/library/Text/Builder.hs b/library/Text/Builder.hs
--- a/library/Text/Builder.hs
+++ b/library/Text/Builder.hs
@@ -2,6 +2,8 @@
 (
   Builder,
   run,
+  length,
+  null,
   char,
   text,
   string,
@@ -14,9 +16,11 @@
 )
 where
 
-import Text.Builder.Prelude
+import Text.Builder.Prelude hiding (length, null)
 import qualified Data.Text.Array as B
 import qualified Data.Text.Internal as C
+import qualified Data.Text.Encoding as E
+import qualified Data.Text.Encoding.Error as E
 import qualified Text.Builder.UTF16 as D
 
 
@@ -106,6 +110,14 @@
 string :: String -> Builder
 string =
   foldMap char
+
+{-# INLINE length #-}
+length :: Builder -> Int
+length (Builder _ x) = x
+
+{-# INLINE null #-}
+null :: Builder -> Bool
+null = (== 0) . length
 
 run :: Builder -> Text
 run (Builder (Action action) size) =
diff --git a/text-builder.cabal b/text-builder.cabal
--- a/text-builder.cabal
+++ b/text-builder.cabal
@@ -1,7 +1,7 @@
 name:
   text-builder
 version:
-  0.4.1
+  0.4.2
 category:
   Text
 synopsis:
@@ -65,11 +65,11 @@
   build-depends:
     text-builder,
     -- testing:
-    tasty == 0.11.*,
-    tasty-quickcheck == 0.8.*,
-    tasty-smallcheck == 0.8.*,
-    tasty-hunit == 0.9.*,
-    quickcheck-instances >= 0.3.11 && < 0.4,
+    tasty >=0.12 && <0.13,
+    tasty-quickcheck >=0.9 && <0.10,
+    tasty-hunit >=0.9 && <0.10,
+    quickcheck-instances >=0.3.11 && <0.4,
+    QuickCheck >=2.8.1 && <3,
     -- general:
     rerebase == 1.*
 
