URL Encoder / Decoder
Encode text for safe use in a URL, or decode a percent-encoded URL back to readable text.
Encoding and decoding happen locally in your browser and are never sent anywhere.
About this tool
URL encoding, also called percent-encoding, converts characters that aren't safe inside a URL — spaces, &, ?, #, and non-Latin characters among others — into a %-prefixed hexadecimal format that every browser and server can interpret unambiguously.
This matters because some of those characters already have a special meaning in a URL (& separates query parameters, ? starts the query string, # marks a fragment), so leaving them unencoded inside a value can silently change what the URL actually points to.
This tool uses JavaScript's standard encodeURIComponent and decodeURIComponent functions and runs entirely in your browser, so pasted URLs or parameters are never sent anywhere.
Related tools
Frequently asked questions
- Why do I need to URL-encode text?
- URLs can only safely contain a limited set of characters. Special characters like spaces, &, ?, # or non-Latin characters can break a URL or change its meaning (for example, & normally separates query parameters). Encoding converts them into a safe percent-encoded format like %20 for a space.
- Is my data sent to a server?
- No — encoding and decoding happen locally in your browser using JavaScript's built-in encodeURIComponent and decodeURIComponent functions. Nothing is transmitted anywhere.
- What's the difference between encodeURI and encodeURIComponent?
- encodeURIComponent (used by this tool) escapes nearly every special character, making it safe for encoding a single value that will go inside a URL, such as a query parameter. encodeURI is meant for encoding an entire URL and leaves characters like / and : untouched, since they're structurally meaningful in a full URL.
- When would I need to decode a URL?
- Server logs, browser address bars, and some APIs display or accept percent-encoded text. Decoding it turns something like `hello%20world%3F` back into the readable `hello world?`.