FREE ONLINE BASE64 TOOL
Base64 Decoder Online
Decode Base64 and Base64URL into text, including Korean and emoji. UTF-8 is the default; choose another source encoding when needed. Free automatic conversion and copying, with no sign-up.
File decoding
Restore a file from Base64 text and download the result.
Made for everyday text
Convert snippets, API values, and UTF-8 strings in a few clicks.
Conversion stays local
Your input and output are processed in your browser and aren't sent by this tool to a server. Site visits are measured with Google Analytics.
Encoding, explained
Base64 represents data as text. It is not encryption and doesn't keep sensitive information secret.
How to decode Base64 text online
Base64 decoding restores bytes from a text representation. The text converter above displays readable text using the selected character encoding, including Unicode and emoji. To restore images, PDFs or other binary data, choose a Base64 text file in the file decoding section below and download the result.
- Paste the Base64 value into the input box. Remove surrounding JSON quotes or a prefix such as data:text/plain;base64, and keep only the encoded portion.
- Conversion is automatic as you type or paste. Turn off Auto convert to use the button or Ctrl+Enter (⌘+Enter on Mac).
- Use Copy result to copy the output. The UTF-8 input or decoded data limit is 5 MB (5 × 1024 × 1024 bytes).
Tested Base64 text examples
These examples are verified using UTF-8. Compare the input and output to check the conversion direction. A Unicode character can occupy multiple bytes, so character count does not determine Base64 length.
| Input | Result |
|---|---|
SGVsbG8= | Hello |
SGVsbG8g8J+YgA== | Hello 😀 |
7JWI64WV7ZWY7IS47JqUIPCfmIA= | 안녕하세요 😀 |
Supported Base64 formats and padding
Standard Base64 uses letters, digits, + and /. Base64URL uses the same letters and digits but replaces + with - and / with _. Padding is a separate decision: Base64URL may include =, or a protocol may specify its omission. A string containing only letters and digits cannot tell you which alphabet the sender intended.
Each Base64 data character represents six bits. Three bytes supply 24 bits, which fit four characters exactly. With one remaining byte, two data characters are followed by ==. With two remaining bytes, three data characters are followed by =. Padding fills the output group; it does not add bytes to the decoded result.
Zg → f; Zg== → f; 8J-YgA → 😀.
Fixing Base64 decoding errors
Whitespace and line breaks are ignored, and omitted padding is restored. Misplaced or partially supplied padding is rejected: Zg decodes to f, but Zg=, A=AA and Zg=== fail. A whitespace-free length with remainder 1 when divided by 4 is invalid. If a URL changed + to a space, or part of the value was truncated, check the original source.
Choose the original character encoding to decode text
Base64 stores bytes, not a language or character encoding. Leave UTF-8 selected for modern text. For Korean from an older system, try EUC-KR / CP949 only if that is how the source was encoded; Japanese may use Shift_JIS and Chinese may use GB18030.
The tool does not detect character encoding automatically. A result without an error can still be wrong when the wrong encoding is selected. Confirm a known word against the source. Image, PDF and compressed bytes are not text; changing the encoding does not turn them into a readable document.
| Character encoding | Text | Base64 |
|---|---|---|
| UTF-8 | 한글 | 7ZWc6riA |
| EUC-KR / CP949 | 한글 | x9Gx2w== |
Distinguishing format errors from UTF-8 errors
Check the Base64 string first, then the character encoding of the decoded bytes. Invalid Base64 and invalid UTF-8 have different causes. The examples below show how this decoder handles each value.
| Input | Result or cause | What to do |
|---|---|---|
| Zg | f | Fully omitted padding is restored. |
| Zg= | Invalid padding | Use the complete value Zg or Zg==. |
| A=AA | Misplaced padding | = is allowed only at the end. Check the source. |
| A | Invalid length | Check for truncated data; adding = alone cannot fix it. |
| /w== | Invalid UTF-8 | The decoded FF byte is not valid UTF-8. Check the source encoding or file type. |
Decoding JSON values and repeatedly encoded text
For an API response such as {"data":"SGVsbG8="}, paste only SGVsbG8=, not the entire JSON object. For data:text/plain;base64,SGVsbG8=, paste only the part after the comma. URL escapes such as %3D need URL decoding first; this tool does not perform that step.
Decoding U0dWc2JHOD0= once produces SGVsbG8=; pasting that result again produces Hello. The tool converts one layer at a time. A result that looks like Base64 is not proof of another layer: confirm how the source system encoded it.
Frequently asked questions
Why is the decoded text garbled or reported as invalid UTF-8?
Base64 stores bytes, not a language or character encoding. Leave UTF-8 selected for modern text. For Korean from an older system, try EUC-KR / CP949 only if that is how the source was encoded; Japanese may use Shift_JIS and Chinese may use GB18030. The tool does not detect character encoding automatically. A result without an error can still be wrong when the wrong encoding is selected. Confirm a known word against the source. Image, PDF and compressed bytes are not text; changing the encoding does not turn them into a readable document.
Why does decoding produce another Base64 string?
The original may have been encoded more than once. Paste each result back into the input to decode one layer at a time: U0dWc2JHOD0= → SGVsbG8= → Hello. Multiple layers are not decoded automatically.
Can an encoded string have no =?
Yes. If the byte count is a multiple of three, padded Base64 needs no =. Some protocols also deliberately omit padding from incomplete final groups.
Does Base64 protect my text?
Base64 is a reversible representation of data, not encryption. It does not protect passwords or other secrets.
Conversion runs in your browser; your text and result are not sent to a conversion server. Google Analytics measures site visits and feature use.