Kit — Base64
Base64 encoder and decoder
Convert text both ways as you type, turn files into Base64 or data URLs, and paste a blob back to save it as a file. Non-ASCII survives intact, and when a blob will not decode you are told which character on which line is wrong.
The form used inside URLs, filenames and JWTs. Decoding accepts either form automatically.
Nothing here yet
This runs entirely in your browser. Nothing is uploaded.
Related tools
What this one gets right
The browser's own btoa only accepts Latin-1, so it throws on anything outside it, and the workaround everyone copies relies on a deprecated function. This encodes to UTF-8 bytes first, so accents, CJK and multi-codepoint emoji all come back exactly as they went in.
A blob that will not decode is almost always one character: a curly quote a chat client substituted, a full-width space, a truncated tail. You get the line, the column and the character rather than "invalid input" and three thousand characters to search.
Mail transports wrap Base64 at 76 columns. JWTs and URLs use the -_ alphabet with the padding stripped. All of it is accepted as-is — there is nothing to tidy up first.
Base64, briefly
Questions
Do emoji and non-Latin text survive?
Yes — everything is encoded as UTF-8, so a round trip is lossless. If the system on the other end assumes a different encoding, that is a separate problem this cannot fix.
My Base64 has line breaks in it
Paste it as it is. Newlines, spaces and tabs are ignored while decoding. Most mail transports wrap at 76 columns, so this is normal rather than corruption.
How large a file can it handle?
25 MB. During conversion the original bytes, an intermediate string and the Base64 all exist in memory at once, which is what the ceiling is for. Very long output is kept off the page to keep it responsive, but copying and saving still work on the full data.
Is anything uploaded?
No. Everything runs in the page and is gone when you close the tab. Do remember that Base64 is not encryption, so wherever you paste the result, treat the original as readable.
Can I read a JWT with this?
Paste the second dot-separated section and you get the payload JSON — the URL-safe alphabet and missing padding are both handled. It does not verify the signature, so it tells you what the token claims, not whether the claim is genuine.