URL Encode & Decode Online

Paste a URL, a query parameter or any text to percent-encode or decode it (RFC 3986). Handles full UTF-8 (accents, emojis) and shows the query string parameters in a table. Everything runs locally in your browser.

How to URL encode or decode a string

  1. Paste the URL or text into the input panel.
  2. Pick a mode: "Component" for parameter values (also encodes / ? & =) or "Full URL" for a whole address (keeps its structure intact).
  3. Click "Encode" or "Decode". If the input is a URL, its decoded parameters are listed in a table.
  4. Copy the result or download it as a .txt file.

What is URL encoding (percent-encoding)?

URLs can only contain a limited set of ASCII characters. Anything else — spaces, accented letters, emojis or reserved symbols such as &, ?, = or # — has to be converted to its UTF-8 bytes written as %XX. For example, a space becomes %20 and "é" becomes %C3%A9.

Decoding reverses the process and turns %XX sequences back into readable text. It is handy for reading tracking links, debugging OAuth redirect URIs, inspecting UTM parameters or understanding what a form is actually submitting.

Frequently asked questions

What is the difference between encodeURI and encodeURIComponent?

encodeURI is meant for a complete URL and leaves the characters that form its structure (: / ? # & =) untouched. encodeURIComponent is meant for a single value, such as a search parameter, and encodes those characters too. When you put text inside a query string, always use Component mode.

Why are spaces sometimes + and sometimes %20?

In a URL path a space is encoded as %20. HTML forms (application/x-www-form-urlencoded) use + instead. Enable "Treat + as space" when decoding data that came from a form submission.

Why do I get an error when decoding?

It happens when a % is not followed by two valid hex digits, or when the bytes don't form valid UTF-8 (for example, text that was encoded as Latin-1). Check that the string isn't truncated.

Is my data sent to a server?

No. Encoding and decoding are done with JavaScript inside your browser; nothing leaves your device.