URLs may only contain a limited set of ASCII characters. Anything else — spaces, accented letters, ampersands inside a value, emoji — has to be percent-encoded, where each byte becomes a % followed by two hex digits. Getting this wrong is a common source of broken links and mangled parameters.
How to use the URL Encoder / Decoder
- Paste the URL or parameter value
- Choose Component Encode for a single value, or full encoding for a complete URL
- Use Decode to turn percent-escapes back into readable text
- Copy the result
Encode the component, not the whole URL
This is the distinction that causes most bugs. There are two encoding functions and they treat reserved characters differently.
Component encoding escapes everything that is not unreserved, including / ? : @ & = +. Use it for individual parameter values. A search term containing an ampersand must be component-encoded, or the & will be read as a parameter separator and silently truncate the value.
Full-URL encoding leaves those reserved characters alone, because in a complete URL they are structural — the slashes separate path segments, the question mark starts the query. Use it when escaping an entire URL that is otherwise already well-formed.
Encoding a whole URL with component encoding produces a mangled string where https:// has become https%3A%2F%2F.
Characters worth knowing
%20— space. In query strings+also means space, a historical quirk of form submission.%2F— forward slash.%3F— question mark.%26— ampersand.%23— hash. Unencoded, everything after it is treated as a fragment and never sent to the server.
Non-ASCII characters are encoded as their UTF-8 bytes, so a single accented letter becomes two percent-escapes and most emoji become four.
Frequently asked questions
What is the difference between the encode modes?
Component encoding escapes reserved characters like / ? & = — use it for parameter values. Full-URL encoding preserves them because they are structural — use it on complete URLs.
Why does my query parameter get cut off?
The value almost certainly contains an unencoded & or #, which the server reads as structure rather than data. Component-encode the value.
Is %20 the same as +?
In the query string, both decode to a space. In the path, only %20 does — a literal + in a path is a plus sign. Use %20 when unsure.
Do I need to encode non-English characters?
Browsers display them natively and encode behind the scenes, but anything constructing URLs programmatically should encode explicitly. Each character becomes its UTF-8 bytes as percent-escapes.