When to use this
Decode when reading logs, redirect chains, OAuth callback parameters, or nested “url=https%3A%2F%2F…” values.
This page is a focused view of theURL Encode / Decode, which has the full set of options.
Paste a percent-encoded string to turn it back into readable text: q%3Dblack%20%26%20white becomes q=black & white, and %C3%A9 becomes é. Decoding uses decodeURIComponent, the same function every browser uses. Useful for logs, redirect chains and OAuth callback parameters. The string is decoded in this tab and never sent anywhere.
Runs in this tab · nothing is uploaded · Verify in 10 seconds →
Decoding collapses every three-character %XX escape back to its byte and reads the result as UTF-8: q%3Dblack%20%26%20white becomes q=black & white, and multi-byte sequences like %C3%A9 become their real character (é). The operation is decodeURIComponent, the same function every browser uses.
Double encoding has an exact signature: %25 is the escape for the percent sign itself, so a value that was encoded twice shows %253A where a colon should be, decode once to get %3A, twice to get “:”. Whenever a decoded URL still contains %XX sequences, count the %25 prefixes: each one is one extra layer of encoding applied somewhere in the pipeline.
“Could not decode this string.” means a % is not followed by two hex digits, a literal percent sign that should have been %25, or an escape truncated mid-sequence. Trim the string to the offending % (they are easy to spot) or encode stray percent signs first. If + signs appear where spaces belong, the input came from form data: replace + with spaces before decoding.
Decode when reading logs, redirect chains, OAuth callback parameters, or nested “url=https%3A%2F%2F…” values.
This page is a focused view of theURL Encode / Decode, which has the full set of options.
A % not followed by two hex digits (a literal percent sign, or a truncated sequence) is invalid. Encode literal percent signs as %25.
Encoding an already-encoded string: %3A becomes %253A because the % itself gets encoded. It usually means two layers of software each encoded the value; decode twice to recover the original.
Only in form-encoded query strings. This tool follows decodeURIComponent semantics, where + is a literal plus, replace + with spaces first if your input came from form data.