Base64 to JSON Decoder
Paste a Base64 string on the left and get the decoded JSON, pretty-printed, on the right. The payload is validated after decoding, so you immediately see whether it really is JSON. data: URLs are accepted too.
How to use this tool
Copy the Base64 string — from a JWT payload segment, webhook body, message queue, or data: URL.
Paste it into the input on the left. A leading data:...;base64, prefix is stripped automatically.
The decoded JSON appears on the right, pretty-printed with 2-space indentation.
If the decoded bytes are not valid JSON, you get the exact parse error instead of silent garbage.
Frequently asked questions
Can I decode a whole JWT?
Paste the middle segment (between the two dots) — that is the Base64url-encoded payload. Note JWT uses Base64url (- and _ instead of + and /) with no padding; you may need to convert those characters first. The header and signature segments decode to JSON and binary respectively.
What happens if the payload is not JSON?
You get the JSON parse error for the decoded text. The tool never guesses — a failed validation means the bytes you decoded are simply not a JSON document.
Is the decoding UTF-8 safe?
Yes. Bytes are decoded with TextDecoder using UTF-8, so non-ASCII text (emoji, accents, CJK) renders correctly instead of turning into mojibake.
Why is the output pretty-printed?
Readability. Encoded payloads are usually minified; re-indenting them makes inspection far easier. Use the JSON Minifier if you need the compact form back.
Is my data uploaded anywhere?
No. Decoding runs entirely in your browser. Nothing is sent to any server — safe for JWTs and internal payloads.