Security

Base64 Decoder

Decodes standard or URL-safe Base64 back to text, and shows binary payloads as hex rather than as damaged text.

Loading the tool…

Processing happens locally in your browser. What you paste or load is processed by this page and is not uploaded to a server. Nothing is stored unless you use a control that says it stores something, and you can clear anything this site has kept from the privacy page.

How to use this tool

  1. Paste the Base64. Line breaks, missing padding and the URL-safe variant are all handled.
  2. Select Decode.
  3. If the result comes back as hex, the payload is binary rather than text — that is a file, not a string.

What base64 decoder does

Both variants are accepted without you having to say which you have: URL-safe input using - and _ is converted before decoding, and missing padding is added back. Whitespace and line breaks are ignored, so a Base64 block wrapped at 76 characters — as it is inside an email or a PEM file — can be pasted straight in.

Not every Base64 string is text. If the decoded bytes are not valid UTF-8 the result is shown as hexadecimal rather than as a screen of replacement characters, and the summary says so. That is the honest answer for an image, an archive or an encrypted payload, and it tells you something useful: what you have is not a string that somebody encoded, it is a file.

Frequently asked questions

No. The - and _ characters are converted to + and / automatically and missing padding is added back, so both variants decode without you choosing. Whitespace and line breaks are ignored too, so a wrapped block from an email or a PEM file pastes straight in.

Because the decoded bytes are not valid UTF-8 text, which means you have binary data — an image, an archive or an encrypted payload. Showing it as hex is more honest than filling the screen with replacement characters, and it tells you the payload is a file rather than a string.

Usually a stray character that came along with a copy and paste — a quotation mark, an ellipsis where the value was truncated for display, or an HTML entity. Check the ends of the string first; middles are rarely the problem.