100% local — your data never leaves your browser

Base64 to Text — Read What a Blob Says

Decode Base64 back to text. Line breaks, missing padding and the URL-safe alphabet are all accepted, because that is how Base64 actually arrives.

Instant Private Zero cookies

Base64 input

Text output

What this tool does

The Base64 is decoded to bytes, and those bytes are read as UTF-8 text. Both steps can surprise you, so both are worth stating.

It accepts Base64 as it actually arrives

Real Base64 is rarely a single clean line:

  • line breaks — MIME wraps at 76 columns by specification, the base64 command wraps by default, and a PEM block is wrapped too;
  • the URL-safe alphabet — - and _ in place of + and /;
  • missing padding — the URL-safe form drops = deliberately, and many encoders omit it.

All three are accepted. Whitespace is removed, the alphabet is normalised, the padding is restored. What is genuinely not Base64 still fails, with an error rather than a guess.

Bytes, then text

Base64 carries bytes, not characters. Nothing in the encoding says those bytes are text at all — they might be a PNG, a private key, a compressed archive.

This tool reads them as UTF-8, because that is what you want in the common case. When the source was binary, you will see replacement characters instead. That is not a failure of the decoder: it is the honest result of asking for text from something that was never text.

Base64 is not encryption

Worth repeating from the other direction: if you can read a value here, so can anyone who intercepted it. Base64 has no key and no secret. A token found in a log is a token, whether or not it is encoded.

Private by design

Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.

Frequently asked questions

My Base64 has line breaks. Do I need to join it first?
No. MIME wraps Base64 at 76 columns, the `base64` command does the same, and a PEM block is wrapped too — so whitespace is stripped before decoding. Paste it as you found it.
What if the padding is missing?
It is added back. The URL-safe alphabet drops `=` on purpose, and plenty of encoders omit it, so requiring it would reject valid input for no benefit.
Why do I get replacement characters?
Because the decoded bytes are not UTF-8 text. Base64 carries any bytes at all — a PNG, a key, a compressed blob — and this tool renders the result as text. If the source was binary, the output will not be readable, and that is the honest answer rather than a silent mangling.

Related converters