Free — no sign-up
Base64 Encoder & Decoder
Encode or decode Base64 text without mangling non-English characters.
Runs entirely in your browser. Nothing you enter is sent to MASK.
Any characters are fine — emoji, Arabic, Chinese and accents are encoded as UTF-8 bytes.
Uses - and _ in place of + and /, and leaves off the = padding, so the result can go straight into a URL or a JWT. Decoding accepts either variant automatically.
Base64 turns arbitrary bytes into 64 printable characters so they can travel through channels that only carry text — email bodies, JSON fields, data URIs, HTTP headers and configuration files that would otherwise choke on a raw byte.
The step people get wrong is what happens before the encoding: text has to become bytes, and which bytes depends on the character encoding. This tool always uses UTF-8, in both directions, so a string that goes in comes back out identical rather than as a row of question marks.
Questions
- Why do emoji and Arabic come out broken in other Base64 tools?
- Most of them call the browser's built-in btoa(), which only understands characters up to U+00FF and either throws or drops everything above it. This tool converts your text to UTF-8 bytes first, so emoji, Arabic, Chinese and accented Latin all survive the round trip exactly.
- What is URL-safe Base64, and when do I need it?
- Standard Base64 uses + and /, which already mean something inside a URL, and = padding, which has to be escaped. The URL-safe variant (also called base64url) uses - and _ instead and leaves the padding off. JWTs use it. Turn the toggle on when the result is going into a link or a token.
- Is Base64 a form of encryption?
- No. Base64 is an encoding, not a cipher — anyone who has the string can decode it in seconds, exactly as this page does. It is for moving bytes safely through text-only channels, never for hiding a password or a key.
- Why is the Base64 longer than the text I put in?
- Base64 represents every three bytes as four characters, so the output is about a third larger than the input. Non-Latin scripts grow more, because a single character can be two, three or four UTF-8 bytes before encoding even starts.
- Does my text get uploaded anywhere?
- No. The conversion runs in your browser with JavaScript, and nothing you paste is sent to MASK or to anyone else. You can disconnect from the network and the page still works.