URL Encoder & Decoder

Percent-encode or decode a URL or query string. Nothing is sent to a server — everything runs in your browser.

Input text
Output

How to use

  1. Choose a mode: "Text → URL-encoded" (encode) or "URL-encoded → Text" (decode).
  2. Input: Paste text, a URL, or a query string on the left.
  3. Options: Turn on "Space as +" if you need application/x-www-form-urlencoded-style encoding — spaces become + instead of %20.
  4. 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.