Skip to the tools
All kits

Base64 encoder

Text or a file, in either direction. The file side hands back a download rather than printing bytes at you.

Text goes through a real UTF-8 encoder, so an emoji or a line of Urdu survives the round trip exactly. The workaround most answers online suggest does not.

Direction
Input

Base64

Questions

Is what I paste sent anywhere?
No. Every tool in this kit runs in the page itself. There is no server here that receives what you paste, and you can check it in your browser's network tab: using a tool produces no request carrying your input at all.
Why do other base64 tools mangle emoji?
Because the browser's built-in btoa works on bytes, and a JavaScript string is not bytes. Passing it anything outside Latin-1 either throws or, with the usual workaround, silently produces the wrong bytes. Here the text is run through a UTF-8 encoder first, which is what makes a round trip exact.
Can it read base64 that is wrapped across lines?
Yes. Line breaks and spaces are ignored, missing padding is added, and the URL-safe alphabet that uses minus and underscore is accepted too, since that is the form JWT parts arrive in.
Why does decoding my file give a download instead of text?
Because the bytes of a PNG are not text. Showing them would fill the screen with replacement characters and lose the file. Base64 does not record what kind of file it held either, so the extension on the download is yours to set.
Is base64 encryption?
No. It is a way of writing bytes using 64 printable characters, and anybody can reverse it in a second, on this page. It hides nothing.

The other tools here