URL Decoder
Turn percent-escapes back into readable text.
Percent-encode text the way browsers do for query values — spaces to %20, emoji to UTF-8 escapes, reserved characters safely quoted.
encodeURIComponent semantics) — right for query values and path segments.
Unreserved characters (letters, digits, - _ . ! ~ * ' ( )) pass through untouched. Everything else — spaces, &, =, ?, non-ASCII text, emoji — becomes UTF-8 bytes written as %XX escapes.
The encoder quotes reserved characters too. That is exactly right for a query value: ?q= followed by an encoded value stays unambiguous even when the value contains & or =.
Copy the encoded string with one click, or open it directly in a new tab to confirm it resolves to the text you meant.
Everything except unreserved characters (A–Z, a–z, 0–9, - _ . ! ~ * ' ( )) is percent-encoded. Spaces become %20, non-ASCII letters become multi-byte escapes like %C3%A9, and reserved query characters like & and = are escaped too.
Just the parts that carry user data — path segments and query values. Encoding an already-valid URL turns its colons, slashes, and ? into escapes, which is usually wrong. This tool uses component-level encoding on purpose.
The encoder turns plain text into percent-escapes; the URL decoder turns percent-escapes back into readable text. They are exact inverses of each other.