URL Encoder & Decoder
Percent-encode or decode a URL or query string. Nothing is sent to a server — everything runs in your browser.
How to use
- Choose a mode: "Text → URL-encoded" (encode) or "URL-encoded → Text" (decode).
- Input: Paste text, a URL, or a query string on the left.
- Options: Turn on "Space as +" if you need
application/x-www-form-urlencoded-style encoding — spaces become+instead of%20. - Check the result: The converted result appears on the right in real time. Copy it to your clipboard.
Everything runs inside your browser (JavaScript) — nothing you enter is sent to a server or stored. Encoding follows encodeURIComponent rules (reserved characters included).
What is URL encoding (percent-encoding)?
Only a subset of ASCII characters can appear in a URL as-is, so anything else — non-Latin text, spaces, or reserved characters like ? & = — has to be converted to %XX percent-encoding. A space becomes %20 (or + in form encoding), and a multi-byte character is encoded byte by byte in UTF-8 — for example, "안" becomes %EC%95%88. It's widely used in query string values and form submissions.
Frequently Asked Questions
Is my data sent anywhere?
No. All encoding/decoding happens in JavaScript inside your browser and is never sent to a server.
If I paste a whole URL, does it also encode ://, ?, and &?
Yes. This tool follows encodeURIComponent rules and encodes reserved characters too. Use it to encode individual query string values (like a search term), not an entire URL.
Why do I get a "Couldn't decode" error?
This happens when the input contains an invalid % sequence — e.g. a truncated one like %2, or non-hex characters after the %.
How is the + character handled?
With "Space as +" turned on, it behaves like application/x-www-form-urlencoded: spaces convert to/from +. With it off, + is treated as a normal character and gets encoded to %2B.
How is URL encoding different from Base64 encoding?
URL encoding replaces individual characters that aren't URL-safe with %XX, while Base64 re-encodes the entire data into a completely different character set. They're used for different things too — URL encoding for query string values, Base64 for carrying binary data as text.
How are multi-byte characters (non-Latin scripts) encoded?
They're encoded byte by byte in UTF-8. For example, the Korean character "안" is 3 bytes in UTF-8, so it becomes %EC%95%88.