Text to Base64 and back, without mangling non-Latin characters
Encode text to Base64 or decode it back, handling Cyrillic, accents and emoji correctly. Everything happens in your browser.
Base64 exists to push binary data through channels that only accept text — email attachments, data URLs, tokens embedded in JSON.
Naive implementations break the moment you feed them anything outside ASCII. This one encodes through UTF-8 first, so Cyrillic, accented letters and emoji survive the round trip intact.
What this calculator showsEncoded Base64, or the decoded original text Correct UTF-8 handling for any alphabet The resulting length, useful when a field has a size limit What to keep in mindBase64 is an encoding, not encryption — anyone can decode it instantly. Output is roughly a third larger than the input, which is the cost of using only safe characters. FAQsIs Base64 a form of encryption? No, and treating it as one is a real security mistake. It is reversible by anyone with no key at all — it hides nothing.
Why does the encoded string end in = signs? Padding. Base64 works in three-byte groups, and the = characters mark that the final group was short.
Why do some Base64 strings use - and _ instead of + and /? That is the URL-safe variant, since + and / have their own meanings in URLs. This tool uses the standard alphabet.
How much bigger does encoding make my data? About 33%. Three bytes become four characters, which is why Base64 images bloat HTML noticeably.
Worked example A round trip through Cyrillic
Input: привет
Output: 0L/RgNC40LLQtdGC
Note: Decoding that returns the original word exactly. Implementations that skip the UTF-8 step return broken characters here.