Paste an encoded URL or value below to turn sequences like %20, %26 and %C3%A9 back into readable text. Decoding runs in your browser; nothing is sent to a server.
What the decoder does
Percent-encoding (RFC 3986, section 2.1) writes a byte as % followed by two hexadecimal digits. Characters outside ASCII are first converted to UTF-8, so one character can become several escapes: é is %C3%A9. The decoder reverses this with JavaScript's decodeURIComponent, which decodes every escape, including the ones for /, ? and &.
Common escapes
These are the sequences you will meet most in query strings, with what they decode to.
| Encoded | Decoded | Note |
|---|---|---|
| %20 | space | Form data may use + instead |
| %26 | & | Would otherwise start a new parameter |
| %3D | = | Would otherwise split key and value |
| %3F | ? | Would otherwise start the query string |
| %2F | / | Would otherwise separate path segments |
| %23 | # | Would otherwise start the fragment |
| %25 | % | A literal percent sign |
| %2B | + | A literal plus sign |
When + means a space
In application/x-www-form-urlencoded data, which is what HTML forms submit, a space is written as +. Elsewhere in a URL, + is a literal plus sign. Tick "Treat + as space" only when the text comes from a form submission or a query string built that way, or a real plus sign (in a phone number, for example) turns into a space.
Still seeing %20 after decoding?
Then the text was encoded twice: %2520 decodes to %20, which decodes to a space. The tool warns when its output still contains escapes; press "Decode again" to remove the next layer. The double encoding guide explains where this usually comes from.
Decoding a whole URL
When the decoded result is a full URL, the "Edit this URL's parameters" button opens it in URL Editor, where every query parameter gets its own row, already decoded, so you can change values and copy the re-encoded URL.