diff --git a/library/Text/Builder.hs b/library/Text/Builder.hs
--- a/library/Text/Builder.hs
+++ b/library/Text/Builder.hs
@@ -34,6 +34,7 @@
   unsignedDecimal,
   thousandSeparatedDecimal,
   thousandSeparatedUnsignedDecimal,
+  dataSizeInBytesInDecimal,
   -- *** Binary
   unsignedBinary,
   unsignedPaddedBinary,
@@ -263,6 +264,37 @@
     if mod index 3 == 0 && index /= 0
       then return (decimalDigit digit <> char separatorChar)
       else return (decimalDigit digit)
+
+{-| Data size in decimal notation over amount of bytes. -}
+{-# INLINABLE dataSizeInBytesInDecimal #-}
+dataSizeInBytesInDecimal :: Integral a => Char -> a -> Builder
+dataSizeInBytesInDecimal separatorChar amount =
+  if amount < 1000
+    then unsignedDecimal amount <> "B"
+    else if amount < 1000000
+      then dividedDecimal separatorChar 100 amount <> "kB"
+      else if amount < 1000000000
+        then dividedDecimal separatorChar 100000 amount <> "MB"
+        else if amount < 1000000000000
+          then dividedDecimal separatorChar 100000000 amount <> "GB"
+        else if amount < 1000000000000000
+          then dividedDecimal separatorChar 100000000000 amount <> "TB"
+        else if amount < 1000000000000000000
+          then dividedDecimal separatorChar 100000000000000 amount <> "PB"
+        else if amount < 1000000000000000000000
+          then dividedDecimal separatorChar 100000000000000000 amount <> "EB"
+          else if amount < 1000000000000000000000000
+            then dividedDecimal separatorChar 100000000000000000000 amount <> "ZB"
+            else dividedDecimal separatorChar 100000000000000000000000 amount <> "YB"
+
+dividedDecimal :: Integral a => Char -> a -> a -> Builder
+dividedDecimal separatorChar divisor n = let
+  byDivisor = div n divisor
+  byExtraTen = div byDivisor 10
+  remainder = byDivisor - byExtraTen * 10
+  in if remainder == 0 || byExtraTen > 10
+    then thousandSeparatedDecimal separatorChar byExtraTen
+    else thousandSeparatedDecimal separatorChar byExtraTen <> "." <> decimalDigit remainder
 
 {-| Unsigned binary number -}
 {-# INLINE unsignedBinary #-}
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -84,4 +84,12 @@
       testCase "hour" $ assertEqual "" "00:01:00:00" $ B.run $ B.intervalInSeconds 3600,
       testCase "day" $ assertEqual "" "01:00:00:00" $ B.run $ B.intervalInSeconds 86400
     ]
+    ,
+    testCase "dataSizeInBytesInDecimal" $ do
+      assertEqual "" "999B" (B.run (B.dataSizeInBytesInDecimal ',' 999))
+      assertEqual "" "1kB" (B.run (B.dataSizeInBytesInDecimal ',' 1000))
+      assertEqual "" "1.1kB" (B.run (B.dataSizeInBytesInDecimal ',' 1100))
+      assertEqual "" "1.1MB" (B.run (B.dataSizeInBytesInDecimal ',' 1150000))
+      assertEqual "" "9.9MB" (B.run (B.dataSizeInBytesInDecimal ',' 9990000))
+      assertEqual "" "1,000YB" (B.run (B.dataSizeInBytesInDecimal ',' 1000000000000000000000000000))
   ]
diff --git a/text-builder.cabal b/text-builder.cabal
--- a/text-builder.cabal
+++ b/text-builder.cabal
@@ -1,5 +1,5 @@
 name: text-builder
-version: 0.6.5.1
+version: 0.6.6
 category: Text
 synopsis: An efficient strict text builder
 homepage: https://github.com/nikita-volkov/text-builder
@@ -22,11 +22,9 @@
     Text.Builder.UTF16
     Text.Builder.Prelude
   build-depends:
-    base >=4.9 && <5,
-    base-prelude <2,
+    base >=4.10 && <5,
     bytestring >=0.10 && <0.11,
-    deferred-folds >=0.9.9 && <0.10,
-    semigroups >=0.18 && <0.20,
+    deferred-folds >=0.9.10.1 && <0.10,
     text >=1 && <2,
     transformers >=0.5 && <0.6
 
@@ -37,12 +35,12 @@
   default-language: Haskell2010
   main-is: Main.hs
   build-depends:
-    QuickCheck >=2.8.1 && <3,
-    quickcheck-instances >=0.3.11 && <0.4,
+    QuickCheck >=2.13 && <3,
+    quickcheck-instances >=0.3.22 && <0.4,
     rerebase <2,
-    tasty >=0.12 && <2,
-    tasty-hunit >=0.9 && <0.11,
-    tasty-quickcheck >=0.9 && <0.11,
+    tasty >=1.2.3 && <2,
+    tasty-hunit >=0.10.0.2 && <0.11,
+    tasty-quickcheck >=0.10.1 && <0.11,
     text-builder
 
 benchmark benchmark-text
@@ -53,7 +51,7 @@
   ghc-options: -O2 -threaded "-with-rtsopts=-N" -funbox-strict-fields
   main-is: Main.hs
   build-depends:
-    criterion >=1.1 && <2,
+    criterion >=1.5.6.1 && <2,
     rerebase ==1.*,
     text-builder
 
@@ -65,6 +63,6 @@
   ghc-options: -O2 -threaded "-with-rtsopts=-N" -funbox-strict-fields
   main-is: Main.hs
   build-depends:
-    criterion >=1.1 && <2,
+    criterion >=1.5.6.1 && <2,
     rerebase ==1.*,
     text-builder
