URL Encode & Decode

Convert text to percent-encoded form for use in URLs, or decode an encoded URL back to readable text.

Features

Auto-detect direction
Component encoding
Full URL encoding

How to Use

1. Pick Encode or Decode.

2. Paste your URL or text into the input.

3. The result appears live on the right — click Copy.

About this tool

URLs can only contain a limited set of characters, so spaces, non-English letters and symbols like & or = inside a value have to be percent-encoded as bytes such as %20 or %E4%BD%A0. This tool encodes and decodes in two modes that mirror JavaScript's own functions. Component mode (encodeURIComponent) encodes everything except letters, digits and - _ . ! ~ * ' ( ), which is right for a single query parameter value or path segment. Full URL mode (encodeURI) leaves the characters that give a URL its structure — : / ? # & = — untouched, which is right for cleaning up a whole address. Text is encoded as UTF-8, and the tool notices when your input already looks encoded and switches to decoding.

Frequently Asked Questions

When should I use component mode versus full URL mode?
Use component mode for a value you insert into a URL, such as a search term or a redirect address inside a query string. Use full URL mode only for a complete address you want to make valid without breaking its structure.
Why is a space sometimes + and sometimes %20?
%20 is the standard encoding for a space in URLs. The + sign comes from HTML form encoding (application/x-www-form-urlencoded) used in query strings. This tool uses %20; when decoding form data, replace + with spaces first.
How are Chinese, Arabic or emoji characters encoded?
Each character is converted to its UTF-8 bytes, and each byte becomes %XX. For example, 你 becomes %E4%BD%A0 and é becomes %C3%A9. Browsers often display the decoded form in the address bar.
Why does decoding show an error?
A % must be followed by two hexadecimal digits, and the bytes must form valid UTF-8. A stray % sign, as in "50% off", or a truncated sequence cannot be decoded; encode the % itself as %25.
What is double encoding?
Encoding already encoded text turns % into %25, so %20 becomes %2520. It usually happens when both your code and a library encode the same value. Decode twice to recover the text, then encode only once.

Related Tools