Fast, compact, strict and lazy byte strings with a list interface

Version on this page:
LTS Haskell 22.29:
Stackage Nightly 2024-07-13:
Latest on Hackage:

See all snapshots bytestring appears in

BSD-3-Clause licensed by Don Stewart, Duncan Coutts
Maintained by Duncan Coutts
This version can be pinned in stack with:bytestring-,8921

Module documentation for

ByteString: Fast, Packed Strings of Bytes

Build Status

This library provides the Data.ByteString module – strict and lazy byte arrays manipulable as strings – providing very time/space-efficient string and IO operations.

For very large data requirements, or constraints on heap size, Data.ByteString.Lazy is provided, a lazy list of bytestring chunks. Efficient processing of multi-gigabyte data can be achieved this way.

The library also provides Data.ByteString.Builder for efficient construction of ByteString values from smaller pieces during binary serialization.


  • Cabal 1.10 or greater
  • cabal-install
  • GHC 6.12 or greater


cabal install

You can run the testsuite as follows:

cabal test


ByteString was derived from the GHC PackedString library, originally written by Bryan O’Sullivan, and then by Simon Marlow. It was adapted and greatly extended for darcs by David Roundy and others. Don Stewart and Duncan Coutts cleaned up and further extended the implementation and added the .Lazy code. Simon Meier contributed the Builder feature.

Changes Duncan Coutts [email protected] May 2016

  • Fix Builder output on big-endian architectures
  • Fix building with ghc-7.6 and older Duncan Coutts [email protected] May 2016

  • Use Rabin-Karp substring search for breakSubstring and findSubstring
  • Improve the performance of partition for lazy and strict bytestrings
  • Added stripPrefix and stripSuffix for lazy and strict bytestrings
  • Fix building with ghc 8.0 & base 4.9 (Semigroup etc) Duncan Coutts [email protected] Mar 2015

  • Rename inlinePerformIO so people don’t misuse it
  • Fix a corner case in unfoldrN
  • Export isSuffixOf from D.B.Lazy.Char8
  • Add D.B.Lazy.elemIndexEnd
  • Fix readFile for files with incorrectly reported file size
  • Fix for builder performance with ghc 7.10
  • Fix building with ghc 6.12 Duncan Coutts [email protected] Nov 2014

  • Fix integer overflow in concatenation functions
  • Fix strictness of lazy bytestring foldl’
  • Numerous minor documentation fixes
  • Various testsuite improvements