URL Encoder and Decoder: Percent-Encode Text and URLs

  • Free
  • No sign-up
  • Runs in your browser
  • Last updated 2026-10-07
Report a problem

Escape special characters for use in a URL, or turn a percent-encoded string back into readable text.

Everything you enter is processed in your browser and is never sent to a server.

How to use

  1. Paste the text or URL into the input box.
  2. Choose Component for a single value such as a query parameter, or Full URL to keep the URL structure intact.
  3. Press Encode or Decode and copy the result.

Examples

a b&c=d/é
→ a%20b%26c%3Dd%2F%C3%A9
Encode in Component mode. Every reserved character is escaped.
https://x.com/a b?q=é
→ https://x.com/a%20b?q=%C3%A9
Encode in Full URL mode. The : / ? and = characters stay as they are.
a%20b%26c
→ a b&c
Decode.

How it works

A URL can only contain a limited set of characters. Everything else, including spaces and non-English letters, is written as a percent sign followed by the two-digit hexadecimal value of each UTF-8 byte. This is called percent-encoding.

The tool uses the browser’s standard functions: encodeURIComponent and decodeURIComponent in Component mode, encodeURI and decodeURI in Full URL mode. These follow the rules of RFC 3986.

Encode only the part you need. Running Component mode on a whole URL also escapes the : and / characters, which makes the address unusable; for a whole address use Full URL mode, and for each parameter value use Component mode.

Sources

Frequently asked questions

What is the difference between Component and Full URL mode?
Component mode (encodeURIComponent) escapes everything except letters, digits and - _ . ! ~ * ' ( ), so it is right for one value, like a search term. Full URL mode (encodeURI) also leaves characters that give a URL its structure, such as : / ? # & = and @, so a whole address stays usable.
Why does a space become %20 and not +?
Percent-encoding writes a space as %20. The + form is only used in HTML form data (application/x-www-form-urlencoded), which this tool does not produce.
Why does decoding fail with a malformed % sequence?
A % must be followed by two hexadecimal digits, and the bytes must form valid UTF-8. Text such as %E0%A4%A is cut off in the middle of a character, so it cannot be decoded.
How are non-English characters encoded?
They are converted to UTF-8 bytes, and each byte is written as %XX. For example é becomes %C3%A9.
Is my text uploaded?
No. Encoding and decoding run in your browser and the text is never sent to a server.

Last updated: