URL Encoder, Decoder and Parser

Percent-encode and decode URLs in component, whole-URL and form modes, spot double encoding, and split any URL into editable parts. Runs in your browser.

Runs in your browser. Nothing is uploaded.

Web

URL Encoder and Decoder

Encode or decode

Escapes everything except letters, digits and - _ . ! ~ * ' ( ). Use it for one query value, one path segment or one parameter.

Result

Type or paste text on the left. It is escaped as you type.

Parse a URL

Paste a full URL to see its protocol, host, port, path, parameters and fragment, and to edit the parameters.

Example

Input
name=Zoë & Co/2026 100%
Result
name%3DZo%C3%AB%20%26%20Co%2F2026%20100%25

Three ways to encode

Percent-encoding replaces characters that are not safe in a URL with a percent sign and the hexadecimal value of each UTF-8 byte, so ë becomes %C3%AB. Which characters are left alone depends on the job, and the mode selector covers the three you meet in practice. Component mode is JavaScript's encodeURIComponent: it escapes everything except letters, digits and - _ . ! ~ * ' ( ), which is right for a single query value, a path segment or a redirect target.

Whole-URL mode is encodeURI. It keeps ; , / ? : @ & = + $ # so a complete URL stays a URL, which means it will not protect an & or = that sits inside a value. Form mode produces application/x-www-form-urlencoded as the WHATWG URL standard defines it: spaces become +, and only letters, digits and * - . _ remain unescaped. That is what an HTML form or URLSearchParams sends, and it is why + in a query string means a space but in a path is a literal plus.

Decoding errors and double encoding

Decoding fails on a percent sign that is not followed by two hex digits, such as the 100% in a sentence, or on byte sequences that are not valid UTF-8, typically text encoded in Latin-1 where é is %E9 instead of %C3%A9. Instead of a vague URIError the tool points at the exact position and sequence, explains the likely cause, and shows a lenient decode that leaves the broken parts as they were.

Double encoding happens when an already-encoded value is encoded again: %20 turns into %2520. It is a frequent cause of links that show literal %20 in the page or APIs that reject a request. The tool flags text that looks encoded more than once, lists each decoding step, and warns when you are about to encode text that already contains percent-escapes.

Taking a URL apart

Paste a full URL to split it with the browser's own URL parser into protocol, user, host, port, path, query parameters and fragment. Query parameters appear as editable rows; change, add or remove them and the rebuilt URL updates. Internationalised domain names are shown in readable Unicode and in their punycode form (xn--mnchen-3ya.de for münchen.de), which is what DNS and certificates use. Seeing both helps spot look-alike domains, although the tool does not judge whether a name is deceptive.

Rebuilt URLs write parameters in form encoding, so a space becomes +, and duplicate names such as tag=a&tag=b are kept in order. A URL with no scheme is reported as such rather than guessed at.

Frequently asked questions

What is the difference between encodeURI and encodeURIComponent?

encodeURIComponent escapes reserved characters such as / ? & = # and is meant for one piece of a URL. encodeURI leaves them alone so a whole URL remains valid. Using encodeURI on a query value is a common bug because it does not escape & or =.

Should a space be %20 or +?

In a path, always %20. In a query string both are read as a space by form decoders, but only %20 is unambiguous everywhere. Use + only when you produce application/x-www-form-urlencoded data on purpose.

Why does decoding say my text is malformed?

Either a % is not followed by two hex digits, or the escaped bytes are not valid UTF-8. A literal percent sign must be written as %25. Text from older systems may be Latin-1 or Windows-1252 and needs converting.

How do I know if a URL is double encoded?

Look for %25 followed by two hex digits, such as %2520 or %253A. Decode once and see whether percent-escapes remain. The tool does this and shows every step.

Is the URL sent to a server?

No. Encoding, decoding and parsing all run in your browser, so tokens and private links you paste are not uploaded.

Related tools