URL Encoder / Decoder

Percent-encode and decode URLs instantly. Choose component or full-URL mode, toggle form (+) encoding, and keep every character — Korean, emoji, CJK — intact. Nothing leaves your browser.

Encoding scope

Component encodes reserved characters like ? & = / # — use it for query values and path segments. Full URL keeps those structural characters intact for encoding a whole address.

Type in either box — the other updates instantly. Encoding is UTF-8 safe, so Korean, CJK and emoji round-trip perfectly.

Why text has to be percent-encoded for URLs

A URL can only carry a limited set of characters, and a handful of them — such as ? & = # / — are structural: they mark where the path ends and the query begins, where one parameter stops and the next starts. When you want to put arbitrary text (a search term, a name, a file title) inside a URL, those characters have to be escaped so they are treated as data, not structure. Percent-encoding does this by replacing a character with a % followed by its byte value in hexadecimal, so a space becomes %20. This tool encodes and decodes in both directions as you type.

Reserved, unreserved, and the percent rule

RFC 3986 splits characters into groups. The unreserved set — A–Z a–z 0–9 - _ . ~ — is always safe and never encoded. Everything else may need escaping depending on where it appears. Here is how the common ones come out:

CharacterEncodedRole in a URL
space%20 (or + in a form)Not allowed literally
&%26Separates query parameters
=%3DSplits a key from its value
?%3FStarts the query string
#%23Starts the fragment
/%2FPath separator
é (U+00E9)%C3%A9Two UTF-8 bytes
한 (U+D55C)%ED%95%9CThree UTF-8 bytes

Component vs. Full URL — the choice that matters

The mode selector picks between two escaping scopes:

Example 1 — encoding a value (Component). The text John & Jane becomes John%20%26%20Jane. With Form encoding (space → +) turned on it becomes John+%26+Jane instead — the form style used by HTML form submissions.

Example 2 — non-ASCII round-trips. Encoding runs on UTF-8 bytes, so café bar as a component is caf%C3%A9%20bar, and decoding %ED%95%9C%EA%B8%80 gives back 한글 exactly — no garbled characters.

Example 3 — spotting a wrong scope. If you paste the whole value a=1&b=two words and encode it as Full URL, the & and = survive unescaped and are still read as structure. Encode it as a Component instead and they become a%3D1%26b%3Dtwo%20words — safe to drop into a single parameter.

Space: %20 or + ?

Both are valid but come from different rules. In a generic URL a space is %20. Inside an HTML form submitted as application/x-www-form-urlencoded, a space is written as +. Use the Form-encoding toggle when you are building or reading form-style query strings; leave it off for strict percent-encoding. When decoding, the toggle turns + back into a space.

Common mistakes and limits

Sources & further reading

Frequently asked questions

What is URL encoding (percent-encoding) and when do I need it?

URL encoding, also called percent-encoding, replaces characters that have a special meaning in a URL — or that aren't allowed at all — with a % followed by their byte value, like a space becoming %20. RFC 3986 reserves characters such as ? & = # / : because they mark the boundaries of a URL. Whenever you put arbitrary text into a query string, path segment or fragment, url encode it first so those reserved characters don't break the link; url decode reverses it.

Component vs Full URL — encodeURIComponent vs encodeURI, which mode should I pick?

Pick Component (encodeURIComponent) when you're encoding a single piece of a URL — one query-parameter value, a path segment or a fragment — because it also escapes the reserved characters ? & = / # that would otherwise be mistaken for structure. Pick Full URL (encodeURI) when you have an already-assembled address and only want to escape spaces and illegal characters while leaving :// ? & = # intact. Choosing the wrong scope is the most common URL-encoding mistake, which is why this url encoder decoder online lets you switch.

Why is a space sometimes %20 and sometimes + ?

Both are valid, but they come from different rules. In a generic URL a space is percent-encoded as %20. Inside an HTML form submitted as application/x-www-form-urlencoded, a space is written as +. Turn on the Form encoding (space → +) toggle when you're building or reading form-style query strings; leave it off for strict RFC 3986 percent encoding. When decoding, the toggle turns + back into a space.

Why do Korean, emoji and other non-ASCII characters encode correctly here?

Because encoding runs on UTF-8 bytes. encodeURIComponent first converts each character to its UTF-8 byte sequence and then percent-encodes those bytes, so Korean (한글), Japanese, Chinese and emoji become valid %XX%XX sequences and decode back to exactly the original text — no mojibake. That makes this a reliable URL 인코더 디코더 for any language, not just ASCII.

Is my text or URL sent to a server?

No. All encoding and decoding happens 100% in your browser with the built-in encodeURIComponent/encodeURI and decodeURIComponent/decodeURI functions — nothing is uploaded and there are no external requests. Only your last text plus your mode and form-encoding choices are saved to this browser's local storage for convenience; clear the box or your site data to remove them.