Base64
Decoder
Decode Base64 strings to text or images instantly. Supports data URIs and plain Base64.
How It Works
Paste Base64
Paste a Base64 string or data URI into the input field.
Auto-Decode
The content is decoded live as you type. Images are previewed automatically.
Copy or Download
Copy the decoded text or download the decoded content.
Decode Base64 strings online back to plain text or images, with automatic detection of data URIs. ConverterUp's Base64 decoder is useful for inspecting API responses, JWT segments, decoding email attachments, and extracting embedded images from CSS or HTML. Paste the encoded string, see the result instantly, and copy the text or download the decoded image. The decoding runs entirely in your browser, so sensitive tokens, customer payloads, and private images never get logged or transmitted to a remote server.
Where Base64 actually shows up
Data URIs embed images, fonts, and small files directly inside HTML or CSS as data:image/png;base64,iVBORw0KGgo…. Useful for icons under 4 KB that would otherwise cost an HTTP round-trip. Above 4 KB the encoding penalty (Base64 is 33 % larger than raw bytes) outweighs the round-trip savings, so use sprite sheets or HTTP/2 multiplexing instead.
HTTP Basic Auth sends credentials as Authorization: Basic <base64(user:password)>. This is encoding, not encryption — anyone with the header can decode the credentials in one step. Only safe over TLS. The decoder is the fastest way to inspect a curl -v dump and verify which user is being authenticated.
JWT tokens are three Base64URL segments separated by dots: header.payload.signature. Base64URL replaces + with - and / with _ and drops padding. To read a JWT here, paste one segment at a time after swapping - back to + and _ back to /, and add = padding until the length is a multiple of 4.
Email attachments over SMTP use Base64 (specifically MIME Base64 with line breaks every 76 chars) because SMTP was designed for 7-bit ASCII text. Cryptographic keys and certificates in PEM format (-----BEGIN PRIVATE KEY-----) are Base64 wrapped around DER binary. SVG inlining, CSP nonces, OAuth state tokens, WebAuthn credential IDs — Base64 is everywhere in modern web infrastructure.
Encoding vs decoding: direction matters
Encoding takes raw bytes (text, binary, image) and produces a Base64 ASCII string. The output is always 33 % larger than the input (3 input bytes → 4 output chars), padded with = to make the length a multiple of 4. Encoding is deterministic and lossless: encode then decode and you get the exact original bytes back.
Decoding reverses the process. Take 4 Base64 chars → produce 3 bytes. The input must be valid Base64 — characters outside A-Za-z0-9+/= make the decode fail, while spaces and line breaks are ignored.
Text encoding inside Base64 is a separate concern. Base64 encodes bytes, not characters. If you Base64-encode the string café, the result depends on whether you encoded UTF-8 bytes (Y2Fmw6k=) or Latin-1 bytes (Y2Fm6Q==). ConverterUp decodes as UTF-8 and, if the bytes are not valid UTF-8, shows them character by character as a fallback.
The padding question: standard Base64 always pads to a multiple of 4 with =. Base64URL (used by JWT, OAuth, WebAuthn) often strips the padding because URLs hate =. A string of length 22 needs 2 padding chars to reach 24 — add them before decoding if the tool reports invalid input.
Common gotchas: URL-safe, padding, line breaks
URL-safe Base64 (Base64URL, RFC 4648 §5) replaces two characters: + → -, / → _. The padding char = is also typically dropped. ConverterUp expects standard Base64, so convert - back to + and _ back to / before pasting URL-safe strings.
Padding errors are the #1 source of 'invalid Base64' bugs. A token of length 11 cannot decode — Base64 strings must be a multiple of 4. The fix is to append 1, 2, or 3 = until the length is a multiple of 4. Some tools silently accept unpadded input; some throw an error. If you see 'incorrect padding', add equals signs until the length divides by 4.
Line breaks in MIME Base64 (RFC 2045) come every 76 chars because old SMTP servers had line-length limits. Modern decoders strip line breaks before decoding, but some strict implementations do not. If you see decode errors on a Base64 blob from an email or PEM file, run a regex replace /\s/g first to collapse all whitespace, then decode.
Encoding does not encrypt. This is worth repeating because Base64 looks like ciphertext and even experienced developers occasionally treat it as obfuscation. Anyone with the Base64 string can recover the original bytes instantly. Never use Base64 to 'hide' API keys, passwords, or PII — it adds zero security. Use real encryption (AES-GCM, age, libsodium) for actual secrets, and treat Base64 purely as a binary-to-ASCII transport format.
Frequently asked questions
Does it decode JWT tokens?
Partly. A JWT is three Base64URL segments; paste the header or payload segment (after replacing - with + and _ with /, and adding = padding) and the decoder shows its JSON. It does not split the token or check the signature for you.
What is the maximum input size?
There is no fixed limit; strings of several megabytes decode instantly. Decoded output is roughly 75 % of the encoded size since Base64 inflates content by about a third.
Can it detect images automatically?
Yes. If the input is an image data URI, or the decoded bytes start with a PNG, JPG, GIF or WebP header, the tool shows a preview and a download button instead of text.
Is the input sent to a server?
No. All decoding happens client-side using the browser's atob and TextDecoder APIs. ConverterUp does not have an endpoint that receives Base64 strings, which matters when the encoded data contains credentials.
Does the decoder verify JWT signatures?
No. ConverterUp decodes Base64 but does not verify JWT signatures, which requires the signing key (HMAC secret or RSA/ECDSA public key). To verify, use the issuer's public key with a JWT library like jose (Node) or PyJWT (Python).
How do I decode Base64 that was encoded multiple times?
Paste the output back into the decoder and decode again, repeating until you reach readable text. Double-encoding is a common pattern in legacy systems where two layers tried to 'be safe' independently.