Free Base64 Decoder Online
Decode any Base64 string back to plain text or view raw bytes — handles data URIs, URL-safe Base64, and missing padding automatically.
How it works
Paste your Base64
Paste any Base64 string — including data URIs (data:image/png;base64,...), JWT segments, or raw Base64.
Auto-detection
The decoder strips data URI prefixes, normalises URL-safe characters (- and _), and adds missing padding automatically.
View the result
The decoded output appears as UTF-8 text. Switch to Hex view to inspect raw bytes for binary data.
Copy or download
Copy the decoded text to clipboard or download it as a file. Your data never leaves your browser.
Common use cases
JWT token inspection
JWT headers and payloads are Base64URL-encoded. Paste a JWT segment to read the JSON claims directly without a separate JWT tool.
HTTP Basic Auth debugging
HTTP Basic Auth sends credentials as Base64-encoded "username:password". Decode the Authorization header value to verify the credentials.
API response inspection
Some APIs return binary data or certificates as Base64. Decode them to read the content or save as a file.
Data URI inspection
Paste a full data:image/png;base64,... URI to decode and inspect the raw image bytes or save the decoded binary.
Frequently asked questions
What is the difference between Base64 and Base64URL?
Base64URL replaces + with - and / with _ and removes = padding to make it URL-safe. JWT tokens use Base64URL. This decoder handles both formats automatically.
Why does my decoded output look like garbled text?
The Base64 string encodes binary data (an image, PDF, or certificate) rather than text. Switch to Hex view to inspect the raw bytes.
Can I decode a data URI directly?
Yes — paste the full data:image/png;base64,... string and the decoder strips the prefix automatically before decoding.
What does "Invalid Base64" mean?
The input contains characters outside the Base64 alphabet, or the length is wrong after removing whitespace. Check for copy-paste errors or truncated strings.
Is my data sent anywhere?
No. Decoding uses the browser's built-in atob() function. Everything runs locally — your data never leaves your tab.