How to use it
- Choose Encode or Decode.
- Pick the encoding mode: parameter value, full URL or form encoding.
- Paste your text or URL.
- Copy the result, or swap it back into the input.
What URL encoding does
URLs can only contain a limited set of ASCII characters. Everything else, including spaces, accented letters, emoji and characters with special meaning such as &, =, ? and #, has to be percent-encoded: each byte of its UTF-8 form is written as % followed by two hex digits.
| Character | Encoded |
|---|---|
| space | %20 (or + in forms) |
& | %26 |
= | %3D |
é | %C3%A9 |
/ | %2F (in a parameter value) |
So café & crème becomes caf%C3%A9%20%26%20cr%C3%A8me. Decoding reverses it.
Which encoding mode to choose
- Query parameter value (encodeURIComponent): the right choice almost always. It encodes everything except letters, digits and
- _ . ! ~ * ' ( ), so a value can never break the URL around it. Use it for search terms, redirect URLs passed as a parameter, and anything a user typed. - Full URL (encodeURI): keeps the URL structure (
:/?&=#) and encodes only characters that are not allowed at all, such as spaces and accents. Use it to clean up a complete link someone pasted with spaces in it. - Form (x-www-form-urlencoded): like encodeURIComponent, but spaces become
+. This is how HTML forms submit data with GET or POST.
A common bug is using encodeURI on a parameter value: an & in the value then splits it into two parameters.
Reserved and unreserved characters
RFC 3986, the standard that defines URL syntax, splits characters into three groups:
- Unreserved:
A–Z a–z 0–9 - . _ ~. These never need encoding. - Reserved:
: / ? # [ ] @ ! $ & ' ( ) * + , ; =. They have a job in the URL structure, such as?starting the query and&separating parameters. Inside a value they must be encoded, or the URL means something else. - Everything else, including spaces, quotes,
<,>,%itself and all non-ASCII characters, must always be encoded.
Browsers often display decoded, readable URLs in the address bar, but they send the encoded form over the network. When you copy a link from the address bar, you usually get the encoded version.
Decoding URLs and reading parameters
Paste a full URL in Decode mode and the tool turns %XX sequences back into readable characters. If the result is a valid web address, it also lists every query parameter and its value in a table, which is a quick way to inspect tracking links (UTM parameters), redirect chains or API calls.
Tick Treat + as a space for data that came from an HTML form. Leave it unticked if a literal plus sign matters, for example in an encoded phone number or a Base64 value.
If the input contains broken sequences, such as a lone % or %ZZ, the tool decodes everything it can and leaves the invalid parts unchanged, with a warning.
Tips
- Encode each parameter value separately, then join them with
&. Do not encode the whole query string at once. - Watch for double encoding:
%2520is a%20that was encoded again. Decode twice to get the original. - For HTML attributes and page content, you need HTML entities instead: use the HTML encoder.
- For binary data in a URL, Base64URL is often more compact: see the Base64 tool.
Everything runs locally in your browser; nothing you paste is sent anywhere.
Frequently asked questions
What is the difference between encodeURI and encodeURIComponent?
encodeURI keeps URL structure characters like / ? & = #, while encodeURIComponent encodes them too. Use encodeURIComponent for parameter values.
Should spaces be %20 or +?
In the path and in most APIs, use %20. In HTML form data (x-www-form-urlencoded), spaces are written as +.
How do I decode a URL?
Switch to Decode and paste the URL. The readable version appears instantly, with query parameters listed in a table.
Why do I see %2520 in my URL?
The text was encoded twice: %25 is the encoded % sign. Decode it twice to get the original.
Is my URL sent anywhere?
No. Encoding and decoding happen entirely in your browser.
Last updated: November 12, 2026