Base64 Encoder / Decoder
Encode Unicode text or decode Base64 with explicit UTF-8 and alphabet handling.
INPUT
OUTPUT
Choose a direction and alphabet, then convert. Empty text is supported.
Enable JavaScript to convert locally. No server submission is available.
One tool, both directions.
Choose Encode or Decode, select the alphabet, then convert. Swap moves the complete result back into input and reverses direction. Copy always uses the full result, including content beyond the visible preview.
Unicode belongs here.
Text is encoded as UTF-8, so accented characters, Gujarati, Hindi and emoji work correctly. Decoding rejects invalid UTF-8 instead of inserting replacement characters. The result is inert text, never HTML or a link to open.
Local and temporary.
Input and output stay in browser memory. Reset and navigation clear them; clipboard access occurs only when you request it. Base64 is an encoding, not encryption.
Details that matter.
Base64 or Base64URL?
Standard Base64 uses + and /, with = padding on output. Base64URL uses - and _ and emits unpadded output. Choose explicitly; mixed alphabets are rejected.
Is missing padding accepted?
Yes, when the remaining length and unused bits form a canonical encoding. Incorrect, excess or misplaced padding is rejected. The optional whitespace setting removes ASCII spaces, tabs, CR and LF only while decoding.
Why does binary data produce an error?
This is a UTF-8 text tool, not a binary-file viewer. Arbitrary bytes that are not valid UTF-8 are rejected. A decoded UTF-8 byte-order mark is preserved.
What happens to line endings?
Direct editing follows the browser’s textarea line-ending behavior. The Paste button and Swap retain the inserted text until it is edited. Copy and download preserve the complete decoded string, including CRLF line endings.
How much text can I convert?
Up to 64 KiB of UTF-8 text, or 96 Ki characters of encoded input including whitespace. Decoded text is capped at 64 KiB. The larger encoded-input allowance supports Base64 expansion and round trips. Large output previews are bounded; copying and swapping use the full result.