What does URL decoding do?
URL decoding scans the input for percent-encoded sequences (%XX where XX is two hex digits), converts each pair to a single byte, and assembles the bytes as a UTF-8 string. The result is the original characters that were encoded — spaces from %20, ampersands from %26, accented letters from multi-byte %C3%A9, and so on.
Should I paste the entire URL or just the query value?
Paste the part you want decoded. If you paste a whole URL, the structural delimiters that were never encoded (like : / ? &) come through unchanged, and only the encoded portions get decoded — that is usually what you want when reading a URL from a log. If you only need one parameter value, copy the part after the equals sign.
Why does decoding sometimes fail with URIError?
decodeURIComponent throws a URIError when it encounters a malformed sequence — a bare % not followed by two hex digits, or %XY where XY is not a valid byte for the current UTF-8 state. This usually means the value was double-decoded somewhere, was truncated, or used a non-standard encoding. Inspect the raw bytes around the offending position.
Does this decode + as a space?
No. decodeURIComponent treats + as a literal plus sign, which is correct per RFC 3986. The + as space rule belongs to application/x-www-form-urlencoded — it applies only to form bodies and the query component on some servers. If your input came from a form, replace + with space first, then decode the rest.
How are emoji and non-Latin characters reconstructed?
The decoder consumes percent sequences as bytes and parses them as UTF-8. So %F0%9F%9A%80 becomes the four-byte UTF-8 encoding of the rocket emoji, and %E4%BD%A0 becomes 你. As long as the original encoder used UTF-8 (which encodeURIComponent always does), every Unicode character round-trips perfectly.
What is double encoding and how do I unwind it?
Double encoding happens when a value is encoded twice — every original % becomes %25, so a real %20 turns into %2520. To unwind, run the decoder twice: the first pass converts %2520 to %20, the second converts %20 to a space. If you decode once and still see %XX in the output, that is the signal to decode again.
Is decoding safe — could it inject characters into my page?
Decoding produces a plain string. It cannot execute code. The risk only appears when you take that decoded string and inject it into HTML, SQL, or a shell command without escaping. Decode for display or analysis, then re-escape for whichever context you put it back into.
Does this tool send my URL to a server?
No. Decoding runs in JavaScript inside your browser. Open DevTools → Network and click Run — no requests are made. Safe for tokens, signed URLs, or any sensitive percent-encoded data.