BSD-3-Clause licensed by Emily Pillmore
Maintained by [email protected]
This version can be pinned in stack with:base32-0.4@sha256:703fa85b21f4b25b1ef2a214398ae3133cc2def2941e21f7cc50fd2a7c301120,2795


Build Status Hackage

Padded and unpadded base32 and base32hex encoding and decoding for Text and ByteString values.

For the companion optics and pattern synonyms, see base32-lens.


The following types are supported for both padded and unpadded std and extended hex alphabets:

  • Data.ByteString
  • Data.ByteString.Lazy
  • Data.ByteString.Short
  • Data.Text
  • Data.Text.Lazy
  • Data.Text.Short

Additionally this library has

  • Better performance than memory for encode and decode 3-4x.
  • Optics for handling more complex structures with Base32 representations via the base32-lens package
  • Checks for both validity and correctness of Base32 and Base32hex encodings

There are no dependencies aside from those bundled with GHC, text-short.


Revision history for base32


  • Support for GHC 9.8
  • Drop support for GHC <9.x
  • Bump bytestring lower bound to 0.11 (thanks @vlix!)

  • Small bug fix
  • Doc updates


  • Bump lower bounds for bytestring and text to latest significant major/major version
  • Update CI for 8.10.x thru 9.6 coverage
  • Correct the update the latin1 decode default for text modules to utf8 (which is now pure for text-2.0).

  • Add support for GHC 9.2.x
  • Drop support for GHC <8.10
  • Drop dependency on ghc-byteorder
  • Bump bounds for deepseq

  • Expose Data.ByteString.Base32.Internal API
  • Use closed-form encoding/decoding length calculations, reducing branching and improving performance
  • Update tests:
    • Migrate to using lower heap-footprint concrete dict passing
    • Support for 8.10.5 testing

  • Bugfix: fix unpadded base32 encoding (#4)
  • Bugfix: Use decodeLatin1 when decoding, defer to decodeWith* primitives for finer-grained Text to ByteString conversions. (#5)
  • Add short and lazy variants for Text and ByteString (#6)
  • Expanded test coverage to 96% (#7)
  • Improved performance and better error reporting in final quanta (#9)
  • Improved docs + trustworthy/safe annotations (#10) – 2020-02-16

  • Documentation now references correct RFC section

0.1.1 – 2020-02-16

  • Textual interface now uses correct unpadded version – 2020-02-16

  • First version. Released on an unsuspecting world.