DevTool Kit

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.

Related tools

Base64 encodeURL encode / decodeHTML entitiesJSON formatterJSON to YAMLYAML to JSONJWT decoderHash generator