Base64 Decoder
Decode any Base64 string back to readable text. The forgiving decoder accepts line breaks, missing padding and the URL-safe alphabet without any clean-up.
0 chars · 0 bytes · 0 lines
Result
0 chars · 0 bytes · 0 lines
About Base64 decoding
Decoding maps every group of 4 Base64 characters back to the original 3 bytes. This decoder is deliberately forgiving: line breaks, stray spaces, missing = padding and the URL-safe alphabet (- and _) are all accepted without pre-cleaning the input.
Common jobs are inspecting JWT payloads, checking API tokens, and peeking at Data URLs or email attachments. Decoded bytes are shown as UTF-8 text — decoding an image or other binary will look like gibberish, which is expected. Everything runs locally, so pasting tokens here is safe.
What this tool handles
Unicode done right
Text is converted to UTF-8 bytes before encoding, so 中文, café and 🔒 round-trip correctly instead of throwing an error.
Forgiving decoder
Line breaks, stray whitespace, missing = padding and the URL-safe alphabet are all accepted without any clean-up on your side.
Nothing leaves the tab
Encoding runs in JavaScript on your device. Tokens, credentials and payloads are never sent anywhere.
Frequently asked questions
How can I tell whether a string is Base64?
It uses only A–Z a–z 0–9 + / (or - _ in the URL-safe variant), its length is a multiple of 4, and it may end with one or two = padding characters.
Why is the decoded output garbled?
Two common causes: the original data was binary (an image, a zip) rather than text, or it was text in a legacy encoding other than UTF-8. The tool itself is decoding correctly.
Does it decode when the = padding is missing?
Yes. Missing padding, embedded newlines and the URL-safe alphabet are all handled automatically.
A JWT segment fails elsewhere but works here — why?
JWT uses the URL-safe alphabet without padding. Many decoders reject both; this one accepts them natively.