URL Decode JSON

Decode URL-encoded JSON back to regular JSON.

Input (URL-encoded JSON)
Output (JSON)

What It Does

The URL Decode JSON tool reverses percent-encoding to restore JSON data from URL-encoded format back to its original, human-readable structure. When JSON is embedded in a URL — whether in a query string, a webhook payload, or an API request — characters like braces, quotes, colons, and spaces get replaced with percent-encoded sequences such as %7B, %22, %3A, and %20. These sequences are unreadable at a glance and impossible to debug without decoding them first. This tool handles that conversion instantly, transforming a garbled string of percent-codes back into clean, formatted JSON you can actually read and work with. It's an essential utility for frontend developers inspecting network requests, backend engineers debugging webhook integrations, QA testers validating API query parameters, and anyone who regularly copies URLs from browser address bars or log files. Beyond simple decoding, the tool also validates the JSON structure after decoding, so you know immediately whether the underlying data is well-formed or malformed. Whether you're tracing a bug in a third-party API call, restoring a shared URL containing configuration data, or just trying to understand what a complex GET request is actually sending, the URL Decode JSON tool gives you clarity in seconds.

How It Works

The URL Decode JSON applies its selected transformation logic to your input and produces output based on the options you choose.

It applies a fixed set of transformation rules to your input, so the output is stable and easy to verify.

All processing happens in your browser, so your input stays on your device during the transformation.

Common Use Cases

  • Extracting and reading JSON data embedded in URL query parameters during API debugging sessions.
  • Decoding percent-encoded JSON payloads found in browser address bars after form submissions or redirects.
  • Restoring JSON configuration objects stored in bookmarked or shared URLs to inspect their original structure.
  • Reading and validating JSON data sent through webhook URLs from services like Stripe, GitHub, or Zapier.
  • Converting URL-encoded API responses or error payloads into readable JSON for troubleshooting integration issues.
  • Decoding JSON stored in OAuth redirect URIs or state parameters to verify correct data flow during authentication.
  • Inspecting encoded query strings in server log files to understand what data clients are actually sending.

How to Use

  1. Paste the full URL-encoded JSON string into the input field — this can be a raw percent-encoded string, a complete URL with query parameters, or just the value portion of a key-value pair.
  2. The tool automatically detects and decodes all percent-encoded characters, replacing sequences like %7B with '{', %22 with '"', %3A with ':', and so on, reconstructing the original JSON text.
  3. Review the decoded output in the result panel, which displays the restored JSON in a readable format so you can inspect keys, values, and nested structures at a glance.
  4. Check the validation indicator to confirm whether the decoded result is valid, well-formed JSON — this helps you distinguish between an encoding issue and an underlying data structure problem.
  5. Copy the decoded JSON to your clipboard with one click for use in your code editor, API client, documentation, or further processing.

Features

  • Full percent-encoding reversal that handles all RFC 3986 reserved and unreserved characters, including spaces, brackets, quotes, and special symbols.
  • Support for deeply nested JSON structures, correctly decoding multi-level objects and arrays without corrupting hierarchy or data types.
  • Post-decode JSON validation that immediately flags whether the decoded output is syntactically valid JSON, saving you an extra manual check.
  • Preservation of all original JSON data types — strings, numbers, booleans, nulls, arrays, and objects are all restored exactly as they were before encoding.
  • Handles both fully encoded strings and partially encoded strings, gracefully processing inputs where only some characters were percent-encoded.
  • Instant, client-side processing with no server round-trip, so your potentially sensitive JSON data never leaves your browser.
  • One-click copy of decoded output, making it easy to move the restored JSON directly into your development workflow.

Examples

Below is a representative input and output so you can see the transformation clearly.

Input
hello%20world%3F
Output
hello world?

Edge Cases

  • Very large inputs may take a few seconds to process in the browser. If performance slows, split the input into smaller batches.
  • Mixed formatting (tabs, line breaks, or inconsistent delimiters) can affect output. Normalize spacing first if needed.
  • URL Decode JSON follows the selected options strictly. If the output looks unexpected, re-check option settings and input format.

Troubleshooting

  • Output looks unchanged: confirm the input contains the pattern this tool modifies and that the correct options are selected.
  • Output differs from a previous run: confirm that the input and every option match, because deterministic tools should repeat when the settings are identical.
  • Unexpected characters: check for hidden whitespace or encoding issues in the input and try normalizing first.
  • Slow processing: reduce input size or try a modern browser with more available memory.

Tips

If the decoded output isn't valid JSON, check whether the original string was properly formed JSON before it was encoded — encoding cannot fix pre-existing syntax errors like missing commas or unmatched brackets. When copying encoded strings from a browser address bar, make sure you're grabbing only the value portion of the parameter rather than the entire URL, unless you want to decode the whole thing. For deeply nested or doubly-encoded strings (where JSON was encoded, then encoded again), you may need to run the decoded output through the tool a second time. Always compare the key count and structure of the decoded output against your expected schema to catch any truncation that may have happened during URL transmission.

URL encoding — formally defined in RFC 3986 — is a mechanism for representing arbitrary data within a Uniform Resource Identifier using only the safe subset of ASCII characters. Every character that carries special meaning in a URL (such as ?, &, =, #, and /) or falls outside the printable ASCII range gets replaced by a percent sign followed by its two-digit hexadecimal code point. A space becomes %20, a double quote becomes %22, a left curly brace becomes %7B. The result is a string that can travel safely through any HTTP pipeline without being misinterpreted as part of the URL's structure. JSON — JavaScript Object Notation — is one of the most common data formats sent through URLs, particularly in GET request query parameters, state tokens in OAuth flows, and configuration payloads in webhook URLs. Because JSON relies heavily on characters that are reserved in URLs (braces, brackets, quotes, colons, commas), even a simple JSON object like {"id": 1, "active": true} becomes %7B%22id%22%3A1%2C%22active%22%3Atrue%7D when encoded. Reading this in a log file, browser address bar, or error message is genuinely difficult — which is exactly why a dedicated URL Decode JSON tool is so useful. The decoding process is the exact inverse of encoding: each percent-encoded sequence is looked up and replaced with its corresponding character. The result should be byte-for-byte identical to the original JSON string. What sets a purpose-built JSON decoder apart from a generic URL decoder is the additional validation step — after decoding, the tool parses the result as JSON and confirms it's structurally sound. This matters because a string can be successfully percent-decoded yet still be invalid JSON if the original data had a syntax error. URL-encoded JSON appears in many real-world contexts. OAuth 2.0 and OpenID Connect use it heavily — the state parameter in an authorization URL often contains an encoded JSON object carrying CSRF tokens and post-login redirect paths. Many analytics platforms encode event metadata as JSON in query strings. Webhook services encode callback data into URL parameters for browser-based receivers. API gateways sometimes log request parameters in encoded form, making debugging harder than it needs to be. It's worth distinguishing URL encoding from Base64 encoding, which is another format you'll encounter in similar contexts. Base64 converts binary data into a text-safe string using a 64-character alphabet, and is often used to encode JSON in HTTP headers (like Authorization: Bearer tokens) or in HTML data URIs. URL encoding, by contrast, is character-level escaping designed specifically for URL-safe transmission. A Base64-encoded JSON string looks like eyJpZCI6MX0= while a URL-encoded JSON string looks like %7B%22id%22%3A1%7D — completely different representations. If the tool produces garbled output after decoding, there's a good chance the input was actually Base64-encoded rather than percent-encoded, and you'd want a Base64-to-JSON decoder instead. For developers working with REST APIs, browser DevTools are often the first place you encounter URL-encoded JSON — the Network tab displays query string parameters in their raw encoded form. Being able to quickly paste those values into a decoder and see the actual JSON payload dramatically accelerates debugging. The same applies to reading application server logs, where URL-encoded request parameters are stored verbatim and must be decoded before they're human-readable.

Frequently Asked Questions

What is URL encoding and why does JSON get encoded?

URL encoding (also called percent-encoding) is a way to represent characters that are not safe to include directly in a URL by replacing them with a percent sign followed by their hexadecimal code point. JSON uses characters like curly braces, quotes, colons, and brackets — all of which have special meaning in URLs or are outright forbidden. When JSON data needs to be transmitted as part of a URL query string or path segment, these characters must be encoded to prevent the URL from being misinterpreted. The result is a long string of percent-codes that accurately represents the original JSON but is unreadable without decoding.

What's the difference between URL decoding and Base64 decoding?

URL decoding reverses percent-encoding by replacing sequences like %7B and %22 with their original characters ({ and "). Base64 decoding converts a Base64-encoded string — which looks like eyJpZCI6MX0= — back into its original text. Both are used to transport data safely in different contexts: percent-encoding is designed for URL-safe transmission, while Base64 is used in HTTP headers, data URIs, and token payloads. If you paste a string into this tool and get garbled output, your input may be Base64-encoded rather than percent-encoded, and you should use a Base64 decoder instead. The key visual difference is that percent-encoded strings contain many % signs, while Base64 strings contain only letters, numbers, +, /, and =.

Why does the tool say my decoded JSON is invalid?

This typically means the JSON was malformed before it was ever encoded — URL encoding faithfully preserves whatever data it wraps, including syntax errors. Common causes include truncated strings (the original JSON was cut off before encoding), unescaped special characters inside string values, or a missing closing bracket or brace. Another possibility is that the string was encoded more than once (double-encoded), in which case you'll need to run it through the decoder a second time. You can also check whether the input is actually Base64-encoded JSON rather than percent-encoded JSON.

Can I decode a full URL or just the JSON value portion?

You can paste either a full URL or just the encoded value — the tool handles both. If you paste an entire URL like https://example.com/callback?data=%7B%22id%22%3A1%7D, the tool will decode all percent-encoded sequences throughout the string. If you want to extract only the JSON portion cleanly, copy just the value after the = sign (i.e., %7B%22id%22%3A1%7D) before pasting. Decoding the full URL is convenient for a quick look, but isolating the JSON value gives you a cleaner result that passes JSON validation.

Is my JSON data safe to decode using this tool?

Yes — this tool performs all decoding entirely in your browser using client-side JavaScript. Your input data is never sent to any server, stored, or logged. This makes it safe to use with sensitive JSON payloads such as API tokens, user data, or internal configuration objects. You can verify this by checking your browser's network activity while using the tool — no outbound requests are made.

What does double-encoding mean and how do I handle it?

Double-encoding happens when a string that is already percent-encoded gets encoded a second time. For example, %7B becomes %257B after a second pass (because % itself encodes to %25). This often happens when data passes through multiple systems that each apply their own encoding step without checking whether encoding was already applied. If your decoded output still contains percent-encoded sequences rather than readable JSON, run it through the decoder again — a second pass will resolve one level of double-encoding. If the problem persists, trace back to the source system to determine how many times the data was encoded.