🔗 URL Encoder / Decoder
Percent-encode spaces, accents and emoji for a URL, or turn %C3%A9-style gibberish back into readable text. Query strings are broken out into a table.
How to use
- Paste a URL or any text and choose Encode or Decode. The output updates instantly.
- Encoding a single query value (a search term, a redirect URL inside a parameter)? Choose encodeURIComponent. Making a complete URL safe without breaking its structure? Choose encodeURI.
- The URL breakdown table at the bottom shows host, path and every query-string key/value, decoded. Its copy button copies the parameters as tab-separated rows you can paste into a spreadsheet.
What is URL encoding (percent encoding)?
URLs may only contain a limited set of ASCII characters: letters, digits and a few symbols such as - _ . ~. Anything else — spaces, accented letters, emoji, or reserved characters like ? & = # / when you mean them as data — must be converted to its UTF-8 bytes written as %XX in hexadecimal. That's percent encoding, defined in RFC 3986.
For example, é is two bytes in UTF-8 (C3 A9), so it becomes %C3%A9; the thumbs-up emoji 👍 is four bytes and becomes %F0%9F%91%8D. A space becomes %20. Browsers show the friendly version in the address bar, but the encoded form is what actually travels to the server.
encodeURIComponent vs. encodeURI
| Character | encodeURIComponent | encodeURI |
|---|---|---|
| space | %20 | %20 |
é | %C3%A9 | %C3%A9 |
/ ? : | %2F %3F %3A | unchanged |
& = # | %26 %3D %23 | unchanged |
+ | %2B | unchanged |
- _ . ~ ! * ' ( ) | unchanged | unchanged |
encodeURIComponent also encodes the characters that give a URL its structure, so it's what you want for one value going into a query string. If a search term contains & — say "rock & roll" — and you use encodeURI, you get ?q=rock%20&%20roll and the server sees two parameters. encodeURI leaves https://, ? and & alone and only fixes spaces and non-ASCII characters, which makes it right for an already-assembled URL.
Space: %20 or +?
HTML forms submitted with GET use application/x-www-form-urlencoded, where a space becomes +. URL paths and encodeURIComponent use %20. If + signs aren't turning back into spaces when you decode, turn on the "space ↔ +" option. The URL breakdown table always treats + as a space, like a form would. In code: JavaScript's URLSearchParams and Python's urllib.parse.quote_plus use +; Python's quote uses %20.
Tips
- Seeing
%2520? That's a double-encoded space (%itself became%25). Decode twice with "use output as input." - Building a URL in code? Encode each value separately with encodeURIComponent, or let
URL/URLSearchParamsdo it for you. - Debugging UTM links or OAuth redirects? Paste the whole URL — the breakdown table shows every parameter decoded.
Some very old websites encoded URLs in a legacy character set such as Windows-1252/Latin-1 instead of UTF-8 (e.g. %E9 for é). If UTF-8 decoding fails, the tool automatically retries with legacy encodings (EUC-KR for old Korean sites, then Windows-1252) and tells you which one it used. All processing happens in your browser.