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.Text.Lazy.Encoding.Base64

This module contains Text-valued combinators implementing the RFC 4648 specification for the Base64 encoding format. This includes lenient decoding variants, and external + internal validations for canonicity.

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

Encoding

1 declaration

Decoding

4 declarations

Decode a padded, untyped Base64-encoded Text 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"
valuedecodeBase64UntypedWith
  1. :: (ByteString -> Either err Text)

    convert a bytestring to text (e.g. decodeUtf8')

  2. -> ByteString

    Input text to decode

  3. -> Either (Base64Error err) Text
#

Attempt to decode a ByteString value as Base64, converting from ByteString to Text according to some encoding function. In practice, This is something like decodeUtf8', which may produce an error.

See: RFC-4648 section 4

Example:
decodeBase64UntypedWith decodeUtf8'
  :: ByteString -> Either (Base64Error UnicodeException) Text

Leniently decode an untyped Base64-encoded Text 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 :: Text -> Bool
#

Tell whether an untyped Text value is Base64-encoded.

Examples:
Example1 expression
isBase64 "U3Vu"True
Example1 expression
isBase64 "U3V"False
Example1 expression
isBase64 "U3V="False
valueisValidBase64 :: Text -> Bool
#

Tell whether an untyped Text 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 Text value, use isBase64.

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