---
page_title: base64decode - Functions - Configuration Language
description: The base64decode function decodes a string containing a base64 sequence.
---

# `base64decode` Function

`base64decode` takes a string containing a Base64 character sequence and
returns the original string.

Terraform uses the "standard" Base64 alphabet as defined in
[RFC 4648 section 4](https://tools.ietf.org/html/rfc4648#section-4).

Strings in the Terraform language are sequences of unicode characters rather
than bytes, so this function will also interpret the resulting bytes as
UTF-8. If the bytes after Base64 decoding are _not_ valid UTF-8, this function
produces an error.

While we do not recommend manipulating large, raw binary data in the Terraform
language, Base64 encoding is the standard way to represent arbitrary byte
sequences, and so resource types that accept or return binary data will use
Base64 themselves, which avoids the need to encode or decode it directly in
most cases. Various other functions with names containing "base64" can generate
or manipulate Base64 data directly.

`base64decode` is, in effect, a shorthand for calling
[`textdecodebase64`](/language/functions/textdecodebase64) with the encoding name set to
`UTF-8`.

## Examples

```
> base64decode("SGVsbG8gV29ybGQ=")
Hello World
```

## Related Functions

* [`base64encode`](/language/functions/base64encode) performs the opposite operation,
  encoding the UTF-8 bytes for a string as Base64.
* [`textdecodebase64`](/language/functions/textdecodebase64) is a more general function that
  supports character encodings other than UTF-8.
* [`base64gzip`](/language/functions/base64gzip) applies gzip compression to a string
  and returns the result with Base64 encoding.
* [`filebase64`](/language/functions/filebase64) reads a file from the local filesystem
  and returns its raw bytes with Base64 encoding.
