Base64 Decode — Decode Base64 to Text in Your Browser
Decode Base64 strings back to plain text. Auto-detects UTF-8, Latin-1, and other encodings, runs entirely in your browser. No uploads, no limits.
Base64 is the lingua franca of binary-in-text: it turns any sequence of bytes into a printable ASCII string made of A-Z, a-z, 0-9, +, /, and =. The encoding shows up everywhere there is a need to ship binary through a text-only channel — email attachments (MIME), JSON web tokens (JWT), data URLs in CSS, configuration files that need to embed a key or certificate. Decoding it back to the original bytes is a one-line operation in any programming language; the reason a tool like this exists is that the one-line operation is surrounded by an endless supply of edge cases that make the wrong answer.
The edge cases are all encoding-related, not Base64-related. The encoding itself is unambiguous — every character maps to exactly six bits — but the bytes on the other side were originally some character encoding (UTF-8, Latin-1, Windows-1252, Shift-JIS, GB2312), and the Base64 string carries no information about which. Decoding the Base64 gives you a sequence of bytes; turning those bytes into text requires choosing the right character encoding, and the wrong choice produces mojibake — the famous é and ’ artifacts that appear when UTF-8 bytes are interpreted as Latin-1. The auto-detect here tries UTF-8 first because that catches 95 percent of modern payloads, and falls back to Latin-1 for the rest.
For a final hand-off: if the decoded output is text and you want to embed it in another document, copy directly. If the decoded output is binary (an image, a PDF, an audio file), switch to the Base64-to-Image tool for images, or save the raw bytes to a file with the correct extension for other formats. If you are debugging a JWT or a SAML assertion, the JWT Decoder tool shows the structured payload directly without the manual Base64 step.
How to use
Paste a Base64 string
Drop the encoded payload into the input area. The tool strips whitespace and the `data:...;base64,` prefix automatically so you can paste either a clean string or a full data URL.
Pick an output encoding
Default is UTF-8, which covers the majority of decoded payloads. Switch to Latin-1 if the original was an older web page, an email subject line, or a database dump from before 2010.
Copy or download the result
Copy the decoded text to your clipboard, or download it as a .txt file. Large payloads (multi-megabyte Base64) work because the conversion is in-memory and never touches a server.
Frequently asked
What if the Base64 contains a data URL prefix?
The decoder strips `data:text/plain;base64,` (and similar) prefixes before decoding. Paste the full data URL or the raw payload — both produce the same output without manual cleanup.
How does the auto-encoding detection work?
The decoder validates UTF-8 first (it catches the most common case), then falls back to Latin-1 if the bytes are not valid UTF-8. The detected encoding is shown next to the output so you can override if it guessed wrong.
Why do I get garbled text after decoding?
Mojibake (text that looks like é instead of é) means the original was encoded as UTF-8 but the decoder treated it as Latin-1, or vice versa. Switch the output encoding in the dropdown and try again.
Can it decode Base64URL (RFC 4648 §5)?
Yes — Base64URL replaces `+` with `-` and `/` with `_` and drops padding. The decoder detects both variants automatically and handles missing padding by re-adding it before parsing.
Is there a size limit?
No hard limit. The conversion runs in your browser tab, so the practical ceiling is your available memory — a 50 MB Base64 string decodes to roughly 37 MB of text and uses about 4x that during processing.
Limitations
- Cannot decode binary files cleanlyBinary payloads (images, PDFs, audio) decode to bytes, not to text. Use the Base64-to-Image tool for image payloads, or save the decoded bytes to a file with the matching extension for other binary formats.
- No streaming for huge inputsThe entire Base64 string is held in memory during decoding. Multi-hundred-megabyte inputs may exhaust your browser tab. For very large payloads, a CLI tool like `base64 -d` on macOS/Linux is faster.
- Cannot recover the original encodingIf the encoded text was originally in CP1252, Shift-JIS, or another legacy encoding, the decoder guesses based on validity. For non-UTF-8 / non-Latin-1 sources, set the encoding explicitly in the dropdown.
Platform notes
- macOS
- macOS ships with `base64 -D` in the terminal as a CLI fallback. This browser tool is the right pick when you do not want to open Terminal or you need encoding auto-detection that the CLI does not provide.
- Windows
- PowerShell's `[System.Convert]::FromBase64String()` is the CLI equivalent. This browser tool is the right pick for one-off decodings and for payloads that arrived via a web UI rather than a file.
- Linux
- GNU coreutils ships `base64 -d`. The browser tool is the right pick for content copied from a chat window, an email, or a documentation page — anywhere you would rather not retype into a terminal.
- Web
- Runs entirely client-side. Works offline once the page has loaded. Useful for ad-hoc decodings in restricted environments where opening a terminal or installing software is not an option.