HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulebase64-1.0Haskell2010

Data.ByteString.Lazy.Base64

This module contains ByteString-valued combinators for implementing the RFC 4648 specification of the Base64 encoding format. This includes lenient decoding variants, as well as internal and external validation for canonicity.

  • 7 values
  • Packagebase64-1.0
  • Exports7
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceBase64.hs

Encoding

2 declarations

Decoding

3 declarations

Decode a padded untyped Base64-encoded ByteString value.

See: RFC-4648 section 4

Examples:
Example1 expression
decodeBase64Untyped "U3Vu"Right "Sun"
Example1 expression
decodeBase64Untyped "U3V"Left "Base64-encoded bytestring requires padding"
Example1 expression
decodeBase64Untyped "U3V="Left "non-canonical encoding detected at offset: 2"

Leniently decode an unpadded Base64-encoded ByteString value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.

Note: This is not RFC 4648-compliant.

Examples:
Example1 expression
decodeBase64Lenient "U3Vu""Sun"
Example1 expression
decodeBase64Lenient "U3V""Su"
Example1 expression
decodeBase64Lenient "U3V=""Su"

Validation

2 declarations
valueisBase64 :: ByteString -> Bool
#

Tell whether a ByteString value is base64 encoded.

This function will also detect non-canonical encodings such as ZE==, which are externally valid Base64-encoded values, but are internally inconsistent "impossible" values.

Examples:
Example1 expression
isBase64 "U3Vu"True
Example1 expression
isBase64 "U3V"False
Example1 expression
isBase64 "U3V="False

Tell whether a ByteString value is a valid Base64 format.

This will not tell you whether or not this is a correct Base64 representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded ByteString value, use isBase64.

Examples:
Example1 expression
isValidBase64 "U3Vu"True
Example1 expression
isValidBase64 "U3V"True
Example1 expression
isValidBase64 "U3V="True
Example1 expression
isValidBase64 "%"False