Base64 Decode
Decode Base64 back to readable text instantly, in your browser.
How to use Base64 Decode
- Paste the Base64 string into the input above.
- Read the decoded text — it appears instantly, with UTF-8 characters preserved.
- If it fails, check for Base64url: replace
-with+and_with/, then try again. - Copy the result when you are done.
What is Base64 Decode?
Paste Base64, get text. Drop the encoded string into the field above and the decoded result appears immediately.
Base64 represents binary data using only 64 safe characters — A-Z, a-z, 0-9, + and /, with = as padding. It exists because plenty of systems only reliably carry text: email bodies, JSON fields, URLs, HTML attributes and HTTP headers all pass Base64 through untouched where raw binary would be corrupted.
It is not encryption. Base64 is trivially reversible by anyone — it hides nothing. If a value needs protecting, it needs encryption or hashing, not encoding.
About the Base64 Decode
How to recognise Base64: the character set above and a length that is always a multiple of 4, padded with one or two = at the end when it does not divide evenly. Three bytes of input become four characters of output, which is why Base64 is always about 33% larger than the data it encodes.
Where you meet it:
- Data URIs —
data:image/png;base64,...embeds an image directly in HTML or CSS, saving a request at the cost of size. - Email attachments — MIME has encoded them this way since the early nineties.
- JWTs — the header and payload of a JSON Web Token are Base64url, which is why you can read a token's claims without any key.
- HTTP Basic auth —
Authorization: Basicis justuser:passwordin Base64, which is precisely why it must only travel over HTTPS.
Base64url is a variant you will hit often: it swaps + for - and / for _ so the value is safe inside a URL, and usually drops the padding. If a decoder rejects your string, this is usually why.
On UTF-8: naive decoders mangle accented characters and emoji because they treat each byte as one character. The decoder above handles multi-byte UTF-8 correctly, so "café" and "日本語" come back intact.
Everything is decoded locally in your browser — nothing is uploaded, which matters when the string you are inspecting is a token or a credential.