Skip to content
DevTrove

Encoding

URL Encode / Decode

Percent-encode text for use in a URL, or decode percent-encoded text, with full UTF-8 support.

Runs in your browser

How to use

  1. Paste or type text into the input box.
  2. Select Encode to percent-encode it, or Decode to turn percent-encoded text back into plain text.
  3. If decoding fails, fix the reported escape and decode again.
  4. Use Copy output to copy the result.

What gets encoded

Encoding follows the browser's encodeURIComponent: text is converted to UTF-8 and every character except A–Z, a–z, 0–9 and - _ . ! ~ * ' ( ) is written as %XX escapes. Spaces become %20, and characters with special meaning in URLs, such as / ? & = # and +, are escaped so the result is safe to use as a single query parameter value or path segment.

This encodes a URL component, not a whole URL: encoding https://example.com/a?b=c escapes the :, / and ? as well. Encoding already-encoded text encodes the % signs again (%20 becomes %2520).

How decoding works

Decoding follows the browser's decodeURIComponent and is strict. A % that is not followed by two hexadecimal digits, or escapes whose bytes are not valid UTF-8, are reported as errors instead of being passed through unchanged.

A + sign is decoded as a literal +, not as a space. Treating + as a space is a rule of HTML form encoding (application/x-www-form-urlencoded), not of URL percent-encoding.

Limits

Input is limited to 5,000,000 characters. Encoding can make text up to nine times longer, so encoded output is limited to 20,000,000 characters.

FAQ

Is my text uploaded?
No. Encoding and decoding run entirely in your browser. Your text is not sent to a server, not stored, and not added to the page URL.
Why is my space encoded as %20 and not +?
%20 is the percent-encoding of a space and is valid everywhere in a URL. + only means a space inside HTML form data, so %20 is the safer choice.
Why does decoding fail on my input?
Either a % is not followed by two hexadecimal digits (encode a literal % as %25), or the escapes describe bytes that are not valid UTF-8 text.