Base64 Decoder

Last updated: October 1, 2026

✅ Free Forever 🔒 Files Stay on Your Device ⚡ No Signup Required 🌐 Works in Any Browser

What is Base64 Decoder?

Paste Base64 and get it back as text, as an image, or as a downloadable file. It accepts raw Base64 or a complete data URL, copes with URL-safe characters and missing padding, and decodes real UTF-8 — so accented letters, Arabic, Chinese and emoji come out correctly rather than as gibberish.

Base64 is not encryption, and this matters

The most consequential misunderstanding in this area, and worth being blunt about.

Base64 is a way of writing binary data using 64 safe printable characters. It exists so that things which are not text — an image, a PDF, arbitrary bytes — can travel through systems that only handle text, like an email header or a URL. It is a transport format. It provides no security whatsoever.

There is no key and no secret. Anyone who has the string can decode it in seconds, which is precisely what this page does. So:

A password stored as Base64 is stored in plain text with an extra step. An API key that "looks encrypted" because it is Base64 is not protected at all. HTTP Basic authentication sends your username and password as Base64 in a header — which is why Basic auth over plain HTTP is a serious problem and over HTTPS is merely acceptable. A JWT's payload is Base64 and readable by anyone holding the token; only its signature is cryptographic.

The practical consequence: think before you paste. If a Base64 string came from somewhere sensitive — a config file, an auth header, a token — decoding it in a web page means the plaintext exists in that page. This tool decodes entirely in your browser and sends nothing anywhere, which is the reason to prefer it, but the general habit is worth keeping: treat a Base64 string as if it were the plaintext, because it is.

Four things that usually go wrong, and do not here

Base64 looks trivial and has a handful of edge cases that most decoders fall over.

URL-safe variants. Standard Base64 uses + and /, which are awkward in a URL, so a URL-safe variant swaps them for - and _. JWTs use it, as do plenty of APIs. Feed URL-safe input to a strict decoder and you get an error or nonsense. Here it is converted automatically, so a JWT segment decodes as it stands.

Missing padding. Base64 pads its output with = to a multiple of four characters, and a great deal of real-world Base64 has that padding stripped — by a URL, a config format, a copy-paste, or a deliberate choice. Strict decoders reject it. Here the padding is worked out and restored.

Non-English text. This is the common one. The browser's built-in decode function produces one byte per character and does not understand multi-byte characters, so decoded UTF-8 text comes out as mojibake — Ø£ instead of Arabic, ä½ instead of Chinese. Here the bytes are decoded as proper UTF-8, so text in any language arrives intact.

Not-actually-text. If the decoded bytes are not valid text, many tools show you a screenful of control characters. Here it is identified as binary and offered as a download instead.

It works out what you gave it

You do not have to tell it what is inside.

Text appears in an output box, ready to copy.

An image is displayed — actually rendered on the page, not described. That is the fastest way to answer "what is this data URL in my stylesheet?" or to check that an uploaded image encoded correctly. It works whether you paste a full data:image/png;base64,… URL or just the Base64 part.

Anything else — a PDF, a zip, a font, a compiled file — is offered as a download with the right file type, taken from the data URL if you pasted one.

A line underneath reports how many characters went in and how many bytes came out, which is a quick sanity check: Base64 is about a third larger than the data it encodes, so roughly 1,000 characters should give you about 750 bytes. A wildly different ratio means the input was not what you thought.

Where you will run into Base64

Useful context if you arrived here holding a string and wondering what it is.

Data URLs in HTML and CSS — a small image embedded directly in the file rather than loaded separately, which saves a request at the cost of about a third more bytes.

Email attachments. The email format is text-only, so every attachment is Base64 inside the message.

JWTs. Three dot-separated parts, all Base64. Paste the middle part here and you can read the claims — which is a good way to see exactly how little of a JWT is private.

API responses and config files, where a certificate, a key or a small file is carried as a string.

Basic auth headers, where Basic is followed by Base64 of username:password.

How to recognise it: letters, digits, + and / (or - and _), often ending in one or two =, with no spaces, and a length that is a multiple of four.

Nothing leaves your browser

The decoding happens on your own device. Nothing is sent to a server, so there is no request log and nothing to be stored — which, given the previous section, is the whole point. The strings people decode are frequently tokens, keys, certificates and auth headers, and every one of those pasted into a server-side tool is a credential handed to a stranger.

Related tools

Base64 Encoder goes the other way, turning text or a file into Base64. URL Encoder / Decoder handles the other common encoding — percent-encoding for URLs — and Hash Generator is what you want if you actually need something one-way rather than reversible.

How to Use Base64 Decoder

  1. Paste Base64 Input

    Paste your Base64 string or Data URL (data:image/png;base64,...) into the input area.

  2. Click Decode

    The tool auto-detects whether the result is text, an image, or binary data.

  3. Copy, Preview, or Download

    Copy decoded text, preview images inline, or download binary files.

Features

Image Preview

Base64-encoded images are displayed inline as a visual preview.

Auto-Detection

Automatically detects text, image, and binary content types.

Binary Download

Binary files that cannot be displayed are offered as a direct download.

Frequently Asked Questions

Is Base64 a form of encryption?

No. It is a way of writing binary data using printable characters so it can travel through text-only systems. There is no key and no secret — anyone with the string can decode it instantly. A password stored as Base64 is stored in plain text with an extra step.

Why does my decoded Arabic or Chinese text come out as gibberish elsewhere?

Because the browser's built-in decode produces one byte per character and does not understand multi-byte characters, so UTF-8 text turns into mojibake. This tool decodes the bytes as proper UTF-8, so text in any language arrives intact.

My Base64 will not decode in other tools.

Usually one of two things. It is URL-safe Base64, using - and _ instead of + and /, which strict decoders reject — JWTs and many APIs use it. Or its = padding has been stripped, which is very common. Both are handled automatically here.

Can it decode an image?

Yes, and it displays it rather than just describing it. Paste a full data:image/png;base64 URL or only the Base64 part, and the image renders on the page — the fastest way to check what a data URL in your CSS actually is.

Can I read a JWT with this?

Yes. A JWT is three dot-separated Base64 parts; paste the middle one and you can read the claims. It is a good demonstration of how little of a token is private — only the signature is cryptographic, and the payload is readable by anyone holding it.

Is my input sent anywhere?

No, the decoding happens entirely in your browser and nothing is transmitted. That matters because the strings people decode are often tokens, keys, certificates and auth headers — each of which, pasted into a server-side tool, is a credential handed to a stranger.