How Base64 decoding works
Each Base64 character carries 6 bits, so four characters rebuild three original bytes. Trailing = signs tell the decoder that the last block was short. The recovered bytes are then interpreted as UTF-8 text using decodeURIComponent(escape(atob(value))), which is why Q2FsY3Vsb3JpdW0= comes back as Calculorium rather than mangled characters.
Working backwards from the output length is easy: every four Base64 characters produce three bytes, so a 16-character string like Q2FsY3Vsb3JpdW0= carries at most 12 bytes, and the single pad character tells you the real payload is 11.
The JSON formatter is the obvious companion when this one is not quite the right shape.
How to use this decoder
Paste the encoded string and read the plain text below. Whitespace and line breaks are stripped automatically, which is handy for MIME payloads wrapped at 76 characters. If the string contains characters outside the Base64 alphabet, or its length is not a multiple of four, the tool reports that it is not valid Base64 instead of guessing. To go the other way, use the Base64 encoder.
The whole conversion happens locally with JavaScript: nothing you paste is uploaded, logged or stored, which matters when the string is a token, a config value or a log entry.
When decoding fails
Three problems account for almost every failure:
| Symptom | Likely cause |
|---|---|
| Invalid string | URL-safe variant using - and _ instead of + and / |
| Invalid string | Missing = padding after copy and paste |
| Garbled output | The data was binary, not text |
If the payload came from a URL, run it through the URL decoder first.
A quick sanity check: a valid Base64 string has a length divisible by four and contains only A-Z, a-z, 0-9, plus, slash and trailing equals signs.
Frequently asked questions
- What does Q2FsY3Vsb3JpdW0= decode to?
- It decodes to the text Calculorium.
- Can it decode URL-safe Base64?
- Not directly. Replace - with + and _ with / first, then decode the result here.
- Why does my output look like random symbols?
- The original data was probably binary, such as an image, rather than text. Base64 can carry any bytes but only text displays sensibly.
- Is my data uploaded anywhere?
- No. Decoding runs in your browser with JavaScript, so the string stays on your device.
- Is there a size limit on what I can decode?
- There is no fixed limit, but very large strings are limited by your device's memory. A payload of a few hundred kilobytes decodes instantly, while a multi-megabyte string can briefly freeze the tab while the browser works through it.