About the JSON URL Decode
Decode percent-encoded JSON from a URL or query string and format it for reading.
Key features
- Decodes percent-encoded (URL-encoded) JSON
- Treats + as a space, like form data
- Validates and pretty-prints the decoded result
- Full UTF-8 decoding
- Shows a clear error for malformed sequences
- Private, in-browser decoding
Read JSON hidden in URLs
Web apps often store state, filters or tracking payloads as JSON in the URL. Analytics links, OAuth state parameters, dashboard share links and webhook test URLs are all examples. The JSON arrives percent-encoded, like %7B%22id%22%3A1%7D, which is impossible to read. This tool decodes it and shows formatted, validated JSON.
Example
%7B%22page%22%3A2%2C%22sort%22%3A%7B%22field%22%3A%22date%22%2C%22dir%22%3A%22desc%22%7D%7D
{
"page": 2,
"sort": {
"field": "date",
"dir": "desc"
}
}
Getting the value out of a URL
Given:
https://app.example.com/report?view=table&state=%7B%22page%22%3A2%7D&lang=en
copy only the text between state= and the next &, i.e. %7B%22page%22%3A2%7D, and paste it into the tool.
Common percent codes
| Code | Character | Code | Character |
|---|---|---|---|
%7B | { | %5B | [ |
%7D | } | %5D | ] |
%22 | " | %3A | : |
%2C | , | %20 / + | space |
%26 | & | %25 | % |
Decoding in code
const data = JSON.parse(decodeURIComponent(value.replace(/\+/g, " ")));
from urllib.parse import unquote_plus
data = json.loads(unquote_plus(value))
Related tools
Encode with JSON URL Encode. If the value looks like eyJ..., it's Base64; use Base64 to JSON instead.
How to use the JSON URL Decode
- Paste your data into the input box, upload a file, or click Sample to try it out.
- Adjust the options above the editor if you need to (indentation, delimiter, and so on).
- The result appears instantly in the output panel. Any errors are shown with their line and column.
- Click Copy to copy the result, or Download to save it as a file.