Decode Base64 to UTF-8 text, or encode text as standard or URL-safe Base64.
Padded or unpadded input. Spaces, tabs and line breaks are ignored.
Try an example
Text: up to 256 KiB as UTF-8, before encoding or after decoding. Base64 input: up to 400,000 characters. Each-line mode: up to 200 lines; size limits apply to the whole batch. Encoding is not encryption.
Encode or decode UTF-8 text
Choose Decode or Encode, select a Base64 format, and paste your input. Convert it, then copy the result or use Reverse with result to move it into the input for the opposite conversion. Turn on Live conversion to update the result after you pause typing.
Check what was preserved
Open Text integrity after a conversion to check the round trip, UTF-8 byte count, initial BOM and line endings. Selected invisible characters are listed by code point. Copy keeps the original text characters, including ones the text box cannot show.
Which Base64 format should I use?
Decoding accepts padded and unpadded input in either format. ASCII spaces and tabs in Base64 input are ignored. Line breaks are also ignored unless Each line separately is on. Text being encoded keeps its whitespace.
Standard
Choose this when your source or destination uses the + and / characters. Encoding adds = padding when needed.
URL-safe (Base64URL)
Choose this when your source or destination uses the - (hyphen) and _ (underscore) characters. Encoding omits = padding.
Encode and decode examples
Encode text as standard Base64
Input😀
→
Result8J+YgA==
Decode URL-safe Base64 to text
Input8J-YgA
→
Result😀
Base64 questions
Why is my Base64 rejected?
Characters outside the chosen alphabet, mixed alphabets, misplaced or incorrect = padding, lengths that cannot form whole bytes, and nonzero unused bits are rejected. Use Select problem to find a flagged character. Some pasted values offer a repair proposal for quotes, a data: prefix, stray U+FEFF/U+200B/U+00A0 characters, extra padding or format. Review the proposed input and decoded preview before applying it; Undo replacement restores the original. Missing payload characters are not guessed. For a three-part signed JWT, decode only its header or payload part with URL-safe selected; this does not verify the signature.
Should I turn on Each line separately?
Use it for up to 200 lines (empty lines count), one value per line. Each line gets a result or its own error, and empty lines are kept. Copy all is available only when every line succeeds and no decoded result contains a line break; otherwise copy successful lines individually. Leave this option off when one Base64 value is wrapped across several lines.
Why can valid Base64 fail to produce text?
/w== is valid Base64 for byte 0xFF, which is not valid UTF-8. A file or text in another character encoding may also fail this check. No replacement characters are inserted, and your input stays available.
Is Base64 encryption?
No. Base64 represents bytes as text; it does not keep a message secret. This tool handles UTF-8 text, not file uploads or downloads. Decoded HTML is displayed as text.