Base64 Decoder
Paste Base64 - with `+/` or `-_`, padded or not - and get the original text back. If the bytes are not text, download them as a file or read the hex preview instead.
Both alphabets, padding optional
Standard Base64 and the URL-safe variant are accepted interchangeably, and missing `=` padding is inferred. Whitespace and line breaks are ignored, so you can paste a wrapped MIME body or a PEM block without cleaning it up first.
Binary payloads are handled honestly
If the decoded bytes are not valid UTF-8 - a PNG, a zip, a protobuf message - the tool says so rather than showing a wall of replacement characters. You get a hex preview of the first bytes, which is usually enough to recognise the file type, plus a download button for the raw file.
A quick way to look inside a token
Base64 turns up everywhere: JWT segments, basic-auth headers, Kubernetes secrets, data URIs. Decoding a value is often the fastest way to see what a system actually stored. For JWTs specifically, the dedicated decoder splits the three segments and explains the claims.
Frequently asked questions
Is the string I paste sent anywhere?
No. Nothing you paste leaves your browser. The page loads a small amount of JavaScript, and every calculation happens on your own machine - there is no server to send data to. Base64 strings frequently contain credentials - a Kubernetes secret or a basic-auth header - so decoding locally is the only safe way to do it.
Why does decoding fail with "invalid characters"?
The input contains something outside the Base64 alphabet. Common causes are a copied ellipsis where the string was truncated, a URL-encoded `%3D` instead of `=`, or accidentally including a surrounding quote. Fix the string and try again.
The result is unreadable symbols - what happened?
The decoded bytes are binary, not text. That is expected for images, archives and compiled data. Use the download button to save the bytes to a file, then open it with the right application.
Does the padding matter?
Not here. `=` padding makes the length a multiple of four, which some strict decoders require, but this tool infers it. If another system rejects your string, append `=` characters until the length is divisible by four.