URL Encoder / Decoder
Percent-encode or decode URLs for safe web transmission.
Missing a tool?
Tell us what you'd like us to build next. We read every suggestion, and your email is optional.
What this tool does
The URL Encoder / Decoder converts characters that aren't allowed in a web address, like spaces, accents and symbols, into percent codes such as %20, and turns those codes back into readable text.
How to use it
- Encode full URL: for a whole link. It escapes spaces and special characters but keeps the parts that give a URL its structure (
: / ? # & =), so the link still works.https://example.com/my page?q=cafébecomeshttps://example.com/my%20page?q=caf%C3%A9. - Encode a value: for one piece that goes inside a URL, like a search term. It escapes everything, including
&,=and/, so the value can't break the URL around it.rock & rollbecomesrock%20%26%20roll. - Decode: turns percent codes back into text. Tick Treat + as a space for data from web forms, which write spaces as +.
How percent-encoding works
A URL may only use a limited set of characters. Anything else is written as its UTF-8 bytes, each as % plus two hex digits: a space is %20, é is %C3%A9. Letters, digits and - . _ ~ never need encoding.
A worked example
Take the search link https://example.com/search?q=fish & chips&city=Zürich.
- Encode full URL gives
https://example.com/search?q=fish%20&%20chips&city=Z%C3%BCrich. The spaces and the ü are fixed, but the & inside "fish & chips" is kept, so the server reads the search as "fish " plus a broken extra parameter. - The right way: encode each value first with Encode a value ("fish & chips" becomes
fish%20%26%20chips), then build the link:https://example.com/search?q=fish%20%26%20chips&city=Z%C3%BCrich.
Which characters change?
| Characters | Encode full URL | Encode a value |
|---|---|---|
| Letters, digits and - _ . ~ ! * ' ( ) | Kept | Kept |
| : / ? # @ & = + $ , ; | Kept | Encoded |
| Spaces, accents, emoji, [ ] and others | Encoded | Encoded |
Frequently asked questions
Why do some URLs use + for spaces?
HTML forms send their fields with spaces as + (the "application/x-www-form-urlencoded" format). In the rest of a URL, a space is %20 and + is a real plus sign, which is why the + option is off by default.
Why does my result have %25 in it?
%25 is an encoded % sign: the text was probably encoded already. Decode it first, or encode only the parts that need it.
Is my text sent anywhere?
No. Everything happens in your browser.
What does %2520 mean?
The text was encoded twice: a space became %20, then its % sign was encoded again as %25. Decode it twice, or find the step that encodes twice.
What about domain names with accents?
Domains use a different system called Punycode instead of percent codes: münchen.de becomes xn--mnchen-3ya.de. Browsers convert it automatically; this tool encodes the rest of the address.
Sources: IETF, RFC 3986: Uniform Resource Identifier (URI) Generic Syntax; MDN Web Docs, encodeURI() and encodeURIComponent(). IETF, RFC 3492: Punycode. Last reviewed on SuiteWebTools: October 2026.