Encode a Text value in Base64 with padding.
See: RFC-4648 section 4
Examples:
encodeBase64 "Sun""U3Vu"
:: a typeCtrl KGHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05
Modulebase64-1.0Haskell2010
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.
Encode a Text value in Base64 with padding.
See: RFC-4648 section 4
encodeBase64 "Sun""U3Vu"
Decode a padded Base64-encoded Text value
See: RFC-4648 section 4
decodeBase64 $ assertBase64 @'StdPadded "U3Vu""Sun"
Decode a padded, untyped Base64-encoded Text value
See: RFC-4648 section 4
decodeBase64Untyped "U3Vu"Right "Sun"
decodeBase64Untyped "U3V"Left "Base64-encoded bytestring requires padding"
decodeBase64Untyped "U3V="Left "non-canonical encoding detected at offset: 2"
decodeBase64UntypedWith :: (ByteString -> Either err Text)convert a bytestring to text (e.g. decodeUtf8')
-> ByteStringInput text to decode
-> Either (Base64Error err) TextAttempt 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
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.
decodeBase64Lenient "U3Vu""Sun"
decodeBase64Lenient "U3V""Su"
decodeBase64Lenient "U3V=""Su"
Tell whether an untyped Text value is Base64-encoded.
isBase64 "U3Vu"True
isBase64 "U3V"False
isBase64 "U3V="False
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.
isValidBase64 "U3Vu"True
isValidBase64 "U3V"True
isValidBase64 "U3V="True
isValidBase64 "%"False