Home › Base64 Encoder / Decoder
Encode text to Base64 or decode Base64 back into readable text — UTF-8 safe, so accents, emoji and non-English scripts survive the round trip. For developers, and for anyone who has ever received a mysterious block of characters ending in = signs.
Base64 is a way of writing arbitrary data using only 64 safe characters: A–Z, a–z, 0–9, plus + and /, with = as padding. It exists because many systems — email being the classic example — were built to carry plain text and mangle anything else. Encode binary or special-character data as Base64 and it travels through those systems untouched, then decodes back to exactly what it was. That's why you'll find it inside email attachments, embedded images in web pages (data URIs), authentication headers, tokens, and API payloads.
Two clarifications save a lot of confusion. First, Base64 is not encryption. It hides nothing; anyone can decode it in a second — as this very page demonstrates. Never treat a Base64 string as a way to keep a secret. Second, encoding isn't free: Base64 output is about 33% larger than the input, because it spends 4 characters representing every 3 bytes. It's a transport format, not a compression format. This particular tool is UTF-8 safe, which matters more than it sounds: naive encoders choke on characters outside plain English ASCII, while this one round-trips Arabic, Chinese, emoji and accented European text correctly.
Type the word Hello and encode it. The output is SGVsbG8=. Five letters became eight characters — the ≈33% growth, plus an = padding character rounding the output to a multiple of four.
Now the more revealing test: encode “Café ☕”. The output is Q2Fmw6kg4piV. The é and the coffee emoji are multi-byte characters in UTF-8, and a UTF-8-safe encoder like this one handles them properly — decode the result and you get your exact text back, accents and emoji intact. With a naive encoder you'd get corrupted characters or an outright error; that's the difference UTF-8 support makes, and it's why text “breaks” in some lesser tools.
- and _ instead of + and /).= padding — made it across.- or _ is Base64url, common in tokens. Standard decoders may reject it; the giveaway is those two characters.No — it's an encoding, like writing a word in capital letters. It changes representation, not secrecy. Anyone with any decoder (including this page) can reverse it instantly. For secrecy you need real encryption; for passwords, proper hashing.
Base64 output is always a multiple of 4 characters. If your input doesn't divide neatly, = characters pad the end to complete the final group. One or two padding characters is perfectly normal.
Base64 stores 3 bytes of input in 4 characters of output, so the result grows by about a third. That's the trade for making data safe to pass through text-only systems.
Yes. It's UTF-8 safe, so Arabic, Chinese, accented characters and emoji all encode and decode correctly. Many simpler tools fail here because they assume every character is a single byte.
Usually the input isn't valid Base64: characters outside the Base64 alphabet, a clipped beginning or end, or line breaks and spaces pasted into the middle. Copy the complete string — padding included — and try again.
Base64url swaps + and / for - and _ so the result is safe inside URLs and filenames, and often drops the padding. You'll meet it in tokens and links. If a string contains - or _, it's probably the URL-safe variant.