Skip to content

URL encode and decode

Percent-encode text for safe use in links and query strings, or decode a messy URL back into readable text, with every query parameter listed in a table.

  • Free, no limits
  • No sign-up
Everything happens in your browser; your data is never uploaded.
  • ✓ Free
  • ✓ No sign-up
  • ✓ Nothing uploaded

Next step

What to do next

How to use it

  1. Choose Encode or Decode.
  2. Pick the encoding mode: parameter value, full URL or form encoding.
  3. Paste your text or URL.
  4. Copy the result, or swap it back into the input.
Try it now

What URL encoding does

URLs can only contain a limited set of ASCII characters. Everything else, including spaces, accented letters, emoji and characters with special meaning such as &, =, ? and #, has to be percent-encoded: each byte of its UTF-8 form is written as % followed by two hex digits.

CharacterEncoded
space%20 (or + in forms)
&%26
=%3D
é%C3%A9
/%2F (in a parameter value)

So café & crème becomes caf%C3%A9%20%26%20cr%C3%A8me. Decoding reverses it.

Which encoding mode to choose

  • Query parameter value (encodeURIComponent): the right choice almost always. It encodes everything except letters, digits and - _ . ! ~ * ' ( ), so a value can never break the URL around it. Use it for search terms, redirect URLs passed as a parameter, and anything a user typed.
  • Full URL (encodeURI): keeps the URL structure (: / ? & = #) and encodes only characters that are not allowed at all, such as spaces and accents. Use it to clean up a complete link someone pasted with spaces in it.
  • Form (x-www-form-urlencoded): like encodeURIComponent, but spaces become +. This is how HTML forms submit data with GET or POST.

A common bug is using encodeURI on a parameter value: an & in the value then splits it into two parameters.

Reserved and unreserved characters

RFC 3986, the standard that defines URL syntax, splits characters into three groups:

  • Unreserved: A–Z a–z 0–9 - . _ ~. These never need encoding.
  • Reserved: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. They have a job in the URL structure, such as ? starting the query and & separating parameters. Inside a value they must be encoded, or the URL means something else.
  • Everything else, including spaces, quotes, <, >, % itself and all non-ASCII characters, must always be encoded.

Browsers often display decoded, readable URLs in the address bar, but they send the encoded form over the network. When you copy a link from the address bar, you usually get the encoded version.

Decoding URLs and reading parameters

Paste a full URL in Decode mode and the tool turns %XX sequences back into readable characters. If the result is a valid web address, it also lists every query parameter and its value in a table, which is a quick way to inspect tracking links (UTM parameters), redirect chains or API calls.

Tick Treat + as a space for data that came from an HTML form. Leave it unticked if a literal plus sign matters, for example in an encoded phone number or a Base64 value.

If the input contains broken sequences, such as a lone % or %ZZ, the tool decodes everything it can and leaves the invalid parts unchanged, with a warning.

Tips

  • Encode each parameter value separately, then join them with &. Do not encode the whole query string at once.
  • Watch for double encoding: %2520 is a %20 that was encoded again. Decode twice to get the original.
  • For HTML attributes and page content, you need HTML entities instead: use the HTML encoder.
  • For binary data in a URL, Base64URL is often more compact: see the Base64 tool.

Everything runs locally in your browser; nothing you paste is sent anywhere.

Frequently asked questions

What is the difference between encodeURI and encodeURIComponent?

encodeURI keeps URL structure characters like / ? & = #, while encodeURIComponent encodes them too. Use encodeURIComponent for parameter values.

Should spaces be %20 or +?

In the path and in most APIs, use %20. In HTML form data (x-www-form-urlencoded), spaces are written as +.

How do I decode a URL?

Switch to Decode and paste the URL. The readable version appears instantly, with query parameters listed in a table.

Why do I see %2520 in my URL?

The text was encoded twice: %25 is the encoded % sign. Decode it twice to get the original.

Is my URL sent anywhere?

No. Encoding and decoding happen entirely in your browser.

Last updated: November 12, 2026

Recommended

Similar tools

If URL encode and decode helped, you may need these too.

See all in category →

People also use