URL Encoder & Decoder

Encode and decode URLs online for free. Convert special characters, spaces, and non-ASCII characters to URL-safe format using our percent encoding tool

✅ Local Processing⚡ Fast Conversion

Examples

URL Encoder FAQ and Usage Guide

What is URL encoding?

URL encoding (percent encoding) converts special characters and non-ASCII characters that cannot be included in URLs into %XX format. For example, space becomes %20, and Korean '가' becomes %EA%B0%80.

What's the difference between %20 and +?

%20: Standard space encoding usable in all URL parts
+: Space representation only in query strings
This tool uses the standard encodeURIComponent which encodes to %20.

When should I use URL encoding?

Use it when:

  • URL query parameters contain non-ASCII or special characters
  • API call parameters include spaces, &, =, ?, etc.
  • File names or paths contain special characters

What happens with multiple encoding?

Double encoding issues can occur. For example, re-encoding space (%20) results in %2520. Only encode as many times as needed, and decode the same number of times.

What's the difference between encodeURI and encodeURIComponent?

encodeURI: Encodes entire URL (doesn't encode ://?#=)
encodeURIComponent: Encodes parameter values (encodes all special characters)
This tool uses the safer encodeURIComponent.

Is my data secure?

Yes! All encoding/decoding happens only in your browser. Your URLs or text are never sent to our servers.

When should I encode query parameters?

Encode query parameters (values after ? or &) when they contain spaces, special characters, or non-ASCII characters. Example: "search=coffee shop" should become "search=coffee%20shop" to work correctly in APIs and web requests.

Why do I see %20 instead of + for spaces?

Both %20 and + can represent spaces in URLs, but they're used in different contexts. This tool uses encodeURIComponent which converts spaces to %20, the standard for URL encoding. %20 works everywhere, while + is mainly for form data (application/x-www-form-urlencoded).