Base64 Decode

Paste a Base64 string below and click Decode to convert it back to plain text. All processing happens locally in your browser.

The URL-safe alphabet, line breaks and missing padding are all accepted.
Copied!

What is Base64 Decoding?

Base64 decoding converts a Base64-encoded ASCII string back into the original binary data or text. This is the reverse of Base64 encoding.

If the input contains characters outside the Base64 alphabet (A-Z, a-z, 0-9, +, /, =), decoding will fail with an error.

Decoding uses the browser's own Base64 function, which is strict: it expects the standard alphabet and correct padding, and it refuses anything else rather than guessing. The decoded bytes are then read as UTF-8 text.

Debugging something that will not decode?

A payload that will not decode is usually a symptom rather than the fault: a double encoding somewhere in the pipeline, a charset assumed instead of declared, a token signed over bytes that are not quite the bytes anyone expected. We do this kind of work, on integrations, APIs and the systems that pass data between them.

Tell us what is breaking

Frequently Asked Questions

Why does my Base64 string fail to decode?
Nearly always one of four things: a character outside the alphabet, which usually means a URL was mangled or a copy picked up stray punctuation; a length that leaves a single character over, which cannot represent any whole number of bytes; the URL-safe alphabet, whose hyphens and underscores a standard decoder will not take; or padding stripped somewhere in transit. This page uses the browser's own decoder, which is strict about all four and refuses rather than guessing.
Why is the decoded output not readable text?
Because the bytes were never text. Base64 carries arbitrary data, so what it holds may be an image, a PDF, a compressed archive or a serialised structure. This page reads the decoded bytes as UTF-8 text, so anything that is not text comes out empty or garbled, which is itself the answer. If you were expecting text, suspect a double encoding: something Base64-encoded data that had already been Base64-encoded once.
Can I decode Base64 that has no padding?
Not here. Padding exists so a decoder knows where a stream ends when the length is not a multiple of four, and the browser's decoder insists on it. Many systems drop it because the equals sign is awkward in URLs and filenames, so if your string was one of those, add equals signs until the length divides by four and it will decode. A length that leaves a single character over cannot be fixed that way, because one Base64 character carries six bits and no whole byte can be built from that.
Is it safe to paste sensitive data into this page?
The decoding runs in your browser and nothing is sent anywhere, so the page itself is not the risk. Everything else about the machine is: browser extensions can read page contents, and pasted secrets tend to survive in clipboard history. For a live production credential, decode it locally instead. The command line tool is already on every Unix machine, and there is an equivalent built into PowerShell.
How do I decode a data URI?
Strip the prefix first. A data URI is the word data, then a MIME type, then a marker saying the payload is Base64, then the payload itself, and only that last part is decodable. Delete everything up to and including the comma and paste the rest. Cutting one character too many or too few is the usual cause of a decode that then fails.