URL Encoder and Decoder
Ticked, characters like / ? & and = are escaped too — right for one query parameter. Unticked, they are left alone so a complete URL still works.
Percent-encode text so it can travel safely inside a URL, or decode an escaped string back to something readable. Choose whether you are handling a single value or an entire address, because the two need different rules.
How it works
Percent-encoding replaces a character with % followed by its byte value in hexadecimal. Non-ASCII characters are first converted to UTF-8, then each byte is escaped separately — which is why an accented letter becomes two escapes and an emoji becomes four.
The distinction between the two modes is which characters count as reserved. Treating the input as a single value escapes / ? & = # along with everything else, because inside a parameter those are data. Treating it as a whole URL leaves them alone, because there they are structure.
Worked example
The value a b&c=d encodes to a%20b%26c%3Dd. Without that escaping, the & would start a new parameter and the = would split it — so the receiving server would see two parameters instead of one value.
Decoding works the same way in reverse, and is the quicker way to read a long tracking URL: paste it in and the readable version usually makes the structure obvious.
Common questions
Why do URLs need encoding at all?
Because a URL has structure. Characters like ? & = / and # mean something specific, so when a value contains one of them it must be escaped or it will be misread as part of the URL rather than as data.
What is the difference between the two modes?
Encoding a single value escapes the structural characters too, which is what you want for one query parameter. Encoding a whole URL leaves them intact so the address still works, and only escapes things like spaces and accented characters.
Why do spaces sometimes become %20 and sometimes +?
Both appear in the wild. %20 is correct in a URL path and works everywhere. The + form comes from HTML form submissions, where it is valid inside a query string but not in a path. This tool produces %20, which is the safer choice.
What does %XX actually mean?
A percent sign followed by the two-digit hexadecimal value of the byte. A space is byte 32, which is 20 in hex, giving %20. Characters outside ASCII become several escapes in a row, one per UTF-8 byte.
Why did decoding fail?
Almost always a stray percent sign. A % must be followed by two valid hex digits, so a literal percent in text needs to be written as %25. A sequence like 100%25 decodes to 100%, whereas a bare 100% is malformed.
Should I encode the whole URL or just the parameter?
Just the parameter, nearly always. Encoding a complete URL and pasting it somewhere expecting a link tends to produce something that no longer works, because the slashes and question marks have been escaped away.