URL Encoder / Decoder
Encode special characters and parameters for safe use in a URL, or decode them back — entirely in your browser.
Related tools
About this tool
URLs can only safely carry a limited set of characters — letters, digits, and a handful of punctuation marks like `-`, `_`, `.`, and `~`. Everything else, including spaces, `&`, `=`, `?`, `#`, slashes, and non-Latin characters, has to be represented using percent-encoding: each byte that isn't allowed gets rewritten as a `%` followed by its two-digit hexadecimal value, for example a space becomes `%20`. This tool encodes and decodes that representation for you, so you don't have to build the escape sequences by hand.
Encoding happens with your browser's built-in `encodeURIComponent`, the same function used to safely insert a value into a query string or path segment — it escapes every character that would otherwise be interpreted as part of the URL's structure, including `&` and `=`, which is exactly what you want when the value itself might contain them (a search query, a redirect URL, a piece of user input). Decoding reverses the process and will flag input that contains a malformed percent-encoded sequence instead of silently producing garbage.
This comes up constantly when building or debugging web applications: constructing a query string parameter that contains spaces or symbols, reading a raw request log and wanting to see the actual parameter values, sharing a link that embeds another URL inside it (like an OAuth `redirect_uri` or a tracking `utm_*` value), or figuring out why a server is receiving a parameter differently than expected because it was double-encoded or not encoded at all.
Everything runs locally using your browser's native encoding primitives — nothing you type is sent anywhere, and the tool keeps working with no internet connection once the page has loaded. It also handles Unicode correctly, so accented letters, non-Latin scripts, and emoji in the input encode and decode back exactly as expected.
Switch between the Encode and Decode modes with the toggle at the top. Once you have a result, copy it directly or use the “Send to” button to pass it straight into another tool in this toolbox — handy, for example, when you want to Base64-encode a decoded value or check its length.
Frequently asked questions
What's the difference between this and encoding a whole URL? expand_more
This tool encodes a single value (like a query parameter) so it's safe to place inside a URL — it escapes characters such as `&`, `=`, and `?` that have structural meaning in a URL. Encoding an entire URL with its own scheme and path uses a different, less aggressive function that leaves those structural characters alone.
Why do spaces become %20 or +? expand_more
A space isn't a valid raw URL character. `%20` is the percent-encoded form used everywhere; `+` is an older convention specific to `application/x-www-form-urlencoded` query strings. This tool uses `%20`, which is valid in both contexts.
What happens if I try to decode invalid input? expand_more
The tool detects malformed percent-encoded sequences (like a stray `%` not followed by two hex digits) and shows an error instead of producing incorrect output.
Does this handle emoji and non-English text? expand_more
Yes. Encoding and decoding go through the browser's Unicode-aware primitives, so accented letters, non-Latin scripts, and emoji round-trip correctly.
Does my data leave my browser? expand_more
No. Encoding and decoding happen entirely on your device, and the tool keeps working offline once the page has loaded.