BSD-3-Clause licensed by Bryan O'Sullivan
This version can be pinned in stack with:base64-bytestring-,2334

Fast base64 support Hackage version Stackage version Build Status

This package provides a Haskell library for working with base64-encoded data quickly and efficiently, using the ByteString type.


This library is written in pure Haskell, and it’s fast:

  • 250 MB/sec encoding

  • 200 MB/sec strict decoding (per RFC 4648)

  • 100 MB/sec lenient decoding

Get involved!

Please report bugs via the GitHub issue tracker.

Master Git repository:

  • git clone git://


This library is written by Bryan O’Sullivan. It is maintained by Herbert Valerio Riedel and Mikhail Glushenkov.


See also

  • joinWith has been removed (#32)
  • Bugfix: decode formerly allowed for padding chars to be interspersed in a valid base64-encoded string. This is now not the case, and it is fully spec-compliant as of #31
  • The default behavior for Base64url decode is now to support arbitrary padding. If you need strict padded or unpadded decode semantics, use decodePadded or decodeUnpadded.
  • Added strict unpadded and padded decode functions for Base64url (#30)
  • Added unpadded encode for Base64url (#26).

  • Made performance more robust (#27).
  • Improved documentation (#23).
  • Improved the performance of decodeLenient a bit (#21).

  • Fixed a write past allocated memory in joinWith (potential security issue). -

  • Changelog not recorded for these versions.

  • Fixed: wrong encoding table on big-endian systems.
  • Fixed: too big indices in encoding table construction.

  • Changelog not recorded up to this version.