About URL Encoder/Decoder
URL Encoder/Decoder percent-encodes text so it's safe to use inside a URL, and decodes percent-encoded URLs back to readable text — entirely in your browser. URLs can only contain a limited set of characters, so anything else (spaces, &, ?, #, non-Latin characters, and more) has to be represented as a %XX escape sequence before it can appear in a query string, path segment, or form submission. Everything runs locally using the browser's built-in encodeURIComponent/decodeURIComponent APIs — nothing you paste is uploaded, logged, or stored anywhere.
How to use it
- 1
Paste your text or URL
Paste plain text or a URL fragment into the input pane to encode it, or paste a percent-encoded string to decode it.
- 2
Choose Encode or Decode
Click Encode to percent-encode special characters, or Decode to convert a percent-encoded string back to readable text.
- 3
Copy or swap
Click Copy to copy the result to your clipboard, or Swap to move the output back into the input and run it the other way.
What it does
- Percent-encodes reserved and special characters using encodeURIComponent
- Decodes percent-encoded strings back to readable text
- Treats + as an encoded space when decoding, matching how form submissions encode query strings
- Handles Unicode text correctly (emoji, accented characters, non-Latin scripts), not just ASCII
FAQ
Why does decoding fail with 'malformed % escape sequence'?
This happens when a % in the input isn't followed by two valid hexadecimal digits, or when the decoded bytes don't form valid UTF-8 text. Make sure the string you're pasting is actually percent-encoded and hasn't been truncated or double-encoded incorrectly.
What's the difference between encodeURI and encodeURIComponent?
encodeURI leaves characters that are valid in a full URL (like :, /, ?, and &) untouched, since it expects to encode a whole URL. encodeURIComponent escapes those characters too, since it's meant for encoding a single value — like a query parameter — that will be inserted into a URL. This tool uses encodeURIComponent, which is the right choice for encoding individual values.
Why does a + in my input decode to a space?
The application/x-www-form-urlencoded format used by HTML forms and query strings represents spaces as + rather than %20. This tool follows that convention when decoding, so pasted query strings decode correctly.
Does this tool send my data anywhere?
No. Encoding and decoding both happen locally in your browser using the built-in encodeURIComponent/decodeURIComponent APIs. Your input is never sent over the network.