How to use the Base64 Decoder
1. Paste your Base64 string into the input box — it usually ends with one or two = padding characters.
2. Click Decode from Base64 to convert the encoded string back to readable text.
3. Copy the decoded output to use in your application, config file, or API request.
Tip: the tool handles standard Base64 as well as Base64-encoded UTF-8, so emoji and non-ASCII characters decode correctly.
What is it?
Base64 decoding reverses the Base64 encoding process. Base64 is a binary-to-text scheme defined in RFC 4648 that maps arbitrary bytes to a safe 64-character ASCII alphabet (A–Z, a–z, 0–9, +, /). Every 4 Base64 characters represent exactly 3 original bytes.
You'll encounter Base64-encoded data everywhere: JWT tokens encode their header and payload as Base64 (try pasting the middle segment of a JWT here), HTTP Basic Auth credentials are sent as Authorization: Basic <base64>, inline images in HTML/CSS use data:image/png;base64,... URIs, and many APIs return binary blobs as Base64 strings in JSON responses.
Remember: Base64 is encoding, not encryption. The data is not protected — decoding it is trivial with one function call in any language. If you need confidentiality, use proper encryption (AES-256) on top of Base64.
Example
SGVsbG8sIFdvcmxkIQ==
Hello, World!
The = or == at the end is padding — part of the Base64 standard. It is not a mistake.
Benefits
Pass data safely through any protocol
Encoded content — Base64, URL percent-encoding, HTML entities, Unicode escapes — travels through email, JSON, HTTP headers, and databases without corruption.
Decode any encoded string instantly
URL percent-encoding, Base64, HTML entities, Unicode escapes, JWT payloads — decode any format to readable text in one click, no library or script needed.
Copy-paste ready output for any context
Whether embedding content in a URL, HTML attribute, JSON string, or HTTP header — the correct encoding for each destination, immediately.
Eliminate encoding bugs before they reach production
Test encoding and decoding logic interactively with real inputs — catch character encoding mismatches and broken escaping before they cause user-facing errors.
Frequently asked questions
Why does my decoded output look like garbage?
If the output is unreadable binary noise, the Base64 string likely encodes a binary file (image, PDF, ZIP) rather than text. This decoder outputs the raw decoded text, which will appear corrupted for binary data. To view decoded images, use our Base64 → Image Preview tool.
The decoder says 'Invalid Base64' — what's wrong?
Common causes: extra whitespace or line breaks inside the string, URL-safe Base64 using - and _ instead of + and / (replace them before decoding), missing = padding characters, or non-Base64 characters in the string.
How do I decode a JWT token?
A JWT is three Base64URL segments separated by dots: header.payload.signature. Paste the header or payload segment here (not the whole token), replacing any - with + and _ with /. For a full JWT debugger, use our dedicated JWT Decoder tool.
Is my data safe to decode here?
Yes — all decoding happens entirely in your browser using JavaScript's built-in atob() function. No data is sent to any server. You can use this tool offline.
What is the difference between standard Base64 and URL-safe Base64?
Standard Base64 uses + and / which are special characters in URLs. URL-safe Base64 (RFC 4648 §5, used in JWTs and many APIs) replaces + with - and _ with /, and omits = padding. If standard decoding fails, try replacing - with + and _ with / in your input.