How to use it
Paste text and press Encode or Decode. Pick the mode first:
- Component (default) encodes everything except letters, digits and
- _ . ~. Use it for a single query parameter value, a path segment, or anything you insert into a URL. It is equivalent to JavaScript'sencodeURIComponent, plus encoding of! ' ( ) *for strict RFC 3986 output. - Full URL keeps characters that give a URL its structure, such as
: / ? # & =, and only encodes spaces and other unsafe characters. Use it to clean up a complete URL that contains spaces or non-ASCII letters. It matchesencodeURI.
Tick Spaces as + if you work with HTML form data (application/x-www-form-urlencoded), where a space is written as + instead of %20. When decoding with this option on, + is turned back into a space.
Worked example
You want to link to a search for café & bar. Inserting it raw breaks the URL, because & starts a new parameter. In Component mode the value becomes:
caf%C3%A9%20%26%20bar
so the final link is https://example.com/search?q=caf%C3%A9%20%26%20bar. Notice that é becomes two bytes, %C3%A9: URLs encode the UTF-8 bytes of a character, not the character itself.
Decoding works the other way: paste https://example.com/?city=K%C3%B6ln&q=a%2Bb in Component mode and you get https://example.com/?city=Köln&q=a+b.
Common characters and their encoding
| Character | Encoded | Why it matters |
|---|---|---|
| space | %20 or + | Spaces are not allowed in URLs |
& | %26 | Separates query parameters |
= | %3D | Separates name and value |
? | %3F | Starts the query string |
# | %23 | Starts the fragment; everything after it is not sent to the server |
/ | %2F | Separates path segments |
+ | %2B | Means a space in form encoding |
Common errors
- "% is not followed by two hex digits": a literal percent sign, as in
50% off, was never encoded. Encoded, it should be%25. The error message tells you the position. - "Bytes do not form valid UTF-8": the text was encoded in an older character set such as Latin-1, where é is
%E9rather than%C3%A9. Modern browsers and servers expect UTF-8. - Double encoding: if you see
%2520, a space was encoded twice (%20and then the%again as%25). Decode twice, and fix the code that encodes it a second time. - Plus signs turning into spaces: some servers decode
+as a space in query strings. Encode a literal plus as%2Bto be safe.
Frequently asked questions
What is the difference between encodeURI and encodeURIComponent?
encodeURI is meant for a complete URL and leaves characters like : / ? # & and = untouched. encodeURIComponent is meant for a single value and encodes those characters too. Use Component mode for query values and Full URL mode for whole links.
Should a space be %20 or +?
In URL paths and in most APIs a space is %20. In HTML form submissions and some query strings it is written as +. Turn on Spaces as + only when you work with form-encoded data.
Why does é become %C3%A9?
URLs carry bytes, and in UTF-8 the letter é is stored as the two bytes C3 and A9. Each byte is written as a percent sign followed by two hexadecimal digits.
What does %2520 mean in a URL?
It is a double-encoded space. The space became %20, and then the percent sign was encoded again as %25. Decoding twice gives the original text.
Is my input sent anywhere?
No. Encoding and decoding use your browser's built-in functions and nothing leaves your device.