Easily encode URLs to ASCII percent-encoding or decode them back to readable format. Our free tool ensures your links are web-safe and compatible with all browsers
A URL encoder converts text into a form that can safely go inside a URL, and a URL decoder turns it back. Characters that have special meaning in URLs, or that aren't allowed at all, are replaced by a % followed by their byte value in hexadecimal. This is called percent-encoding. The tool runs in your browser.
The encoder works like JavaScript's encodeURIComponent: letters, digits and - _ . ! ~ * ' ( ) stay as they are; everything else is encoded as UTF-8 bytes.
| Character | Encoded | Why it needs encoding |
|---|---|---|
| space | %20 | Not allowed in URLs |
& | %26 | Separates query parameters |
= | %3D | Separates a parameter name from its value |
? | %3F | Starts the query string |
/ | %2F | Separates path segments |
# | %23 | Starts the fragment |
é | %C3%A9 | Non-ASCII: encoded as its two UTF-8 bytes |
:, / and ? too, which is right for a value inside a URL, such as ?redirect=https%3A%2F%2Fexample.com%2F, but wrong for the URL itself. Encode only the parts that are values.+ in query strings. This decoder follows URL rules and leaves + unchanged; replace it with a space first if the text came from form data.%2520, the text was encoded twice (% became %25). Decode it twice.% is followed by something that isn't two hex digits, or the bytes don't form valid UTF-8.%20 is correct anywhere in a URL. + means a space only in query strings encoded as HTML form data (application/x-www-form-urlencoded). When in doubt, use %20.
URL encoding makes text safe inside a URL using %XX codes. HTML encoding makes text safe to display inside an HTML page using entities like <. A URL placed in an HTML attribute may need both.
Paste them into the encoder: they are converted to UTF-8 and each byte is percent-encoded, so ü becomes %C3%BC. For domain names, use Punycode instead.