URL encoding, also called percent-encoding, is a way of representing characters that aren't allowed in a URL — like spaces, accented letters, emoji, or reserved punctuation — using a percent sign (%) followed by two hexadecimal digits. The URL standard (RFC 3986) only allows a limited set of ASCII characters to appear unescaped, so anything else first gets converted to its UTF-8 bytes, and each byte is written as %XX. For example, a space becomes %20 and the letter é becomes %C3%A9.
Paste any text or URL into the left box, choose Encode or Decode, and the result appears instantly on the right — there's no need to press a button. Use the swap icon to send the result back into the input and flip the mode, and the copy button to grab the output. All the options below are optional and only change how the conversion is done.
By default this tool encodes a single piece of a URL (a query value, a path segment), the same as JavaScript's encodeURIComponent. That mode escapes everything that isn't a plain letter, digit, or -_.~ — including /, :, and &. Turn on Full URL to encode an entire URL instead, which matches encodeURI and leaves structural characters like :, /, ?, #, and & untouched, so the result is still a working link.
%20 vs. +Standard percent-encoding turns a space into %20. HTML forms submitted as application/x-www-form-urlencoded use + instead — that's the format you'll see in a query string built by an <form>. Turn on Spaces as + if you're working with that format; it also correctly treats a + in the input as an encoded space when decoding.
A quick reference for the characters that most often need escaping in a URL:
| Character | Encoded |
|---|---|
| (space) | %20 |
| ! | %21 |
| # | %23 |
| $ | %24 |
| & | %26 |
| ' | %27 |
| ( | %28 |
| ) | %29 |
| + | %2B |
| , | %2C |
| / | %2F |
| : | %3A |
| ; | %3B |
| = | %3D |
| ? | %3F |
| @ | %40 |
| [ | %5B |
| ] | %5D |
Everything runs locally in your browser — nothing you type is sent to a server, so this tool also works offline once the page has loaded.