Decodex
Free browser tool

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.

Converts automatically as you type or paste. Turn off to convert manually.

Base64 & Base64URL supported · Whitespace is ignored

Source character encoding · UTF-8

UTF-8 is the default. Select the original encoding if decoded text is garbled.

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. This online decoder reads those bytes as UTF-8 to display readable text, including Korean and emoji. Use it to inspect an API value or a copied string. It is a text converter rather than a tool for downloading image or PDF files.

  1. 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.
  2. Conversion is automatic as you type or paste. Turn off Auto convert to use the button or Ctrl+Enter (⌘+Enter on Mac).
  3. 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.

InputResult
SGVsbG8=Hello
SGVsbG8g8J+YgA==Hello 😀
7JWI64WV7ZWY7IS47JqUIPCfmIA=안녕하세요 😀

Try the Unicode example →

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 encodingTextBase64
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.

InputResult or causeWhat to do
ZgfFully omitted padding is restored.
Zg=Invalid paddingUse the complete value Zg or Zg==.
A=AAMisplaced padding= is allowed only at the end. Check the source.
AInvalid lengthCheck for truncated data; adding = alone cannot fix it.
/w==Invalid UTF-8The 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.

Base64 Encoder →

Conversion runs in your browser; your text and result are not sent to a conversion server. Google Analytics measures site visits and feature use.