URL Encoder/Decoder

Encode special characters for safe URL transmission. Essential for query strings, API parameters, and web development.
100% Free β€” Instant and accurate.

RFC 3986Compliant
UTF-8Support
0Signup Required

URL Encoder/Decoder

Common Use Cases

πŸ”

Search Queries

Encode user search terms for safe inclusion in URLs and API calls.

πŸ“‘

API Parameters

Safely pass data in REST API query strings and POST bodies.

πŸ”—

Share Links

Create shareable URLs with encoded titles, descriptions, or user data.

πŸ“§

mailto: Links

Encode email subjects and bodies for mailto: URL parameters.

URL Encoding Reference

URL encoding (percent encoding) converts characters that aren't allowed in URLs into a format that can be safely transmitted. Special characters are replaced with % followed by two hexadecimal digits.

Common Encodings

Space β†’ %20 or +
! β†’ %21
# β†’ %23
$ β†’ %24
& β†’ %26
' β†’ %27
( β†’ %28
) β†’ %29
= β†’ %3D
? β†’ %3F
@ β†’ %40

Example

Original: Hello World!?&name=John Doe

Encoded: Hello%20World%21%3F%26name%3DJohn%20Doe

URL Encoding in Code

JavaScriptencodeURIComponent
// For query parameter values (encodes everything)
const query = encodeURIComponent('Hello World!?');
// Result: "Hello%20World!%3F"

// For full URLs (preserves :, /, ?, #, etc.)
const url = encodeURI('https://example.com/search?q=hello world');

// Decode
const decoded = decodeURIComponent('Hello%20World');
// Result: "Hello World"
Pythonurllib.parse
from urllib.parse import quote, unquote, urlencode

# Encode a string
encoded = quote('Hello World!?')
# Result: "Hello%20World%21%3F"

# Encode query parameters
params = urlencode({'q': 'hello world', 'page': 1})
# Result: "q=hello+world&page=1"

# Decode
decoded = unquote('Hello%20World')
# Result: "Hello World"
PHPurlencode / rawurlencode
// For query strings (space = +)
$encoded = urlencode('Hello World!?');
// Result: "Hello+World%21%3F"

// RFC 3986 compliant (space = %20)
$raw = rawurlencode('Hello World!?');
// Result: "Hello%20World%21%3F"

// Decode
$decoded = urldecode('Hello%20World');
// Result: "Hello World"
Gonet/url package
import "net/url"

// Encode query parameter
encoded := url.QueryEscape("Hello World!?")
// Result: "Hello+World%21%3F"

// Encode path segment
pathEncoded := url.PathEscape("Hello World")
// Result: "Hello%20World"

// Decode
decoded, _ := url.QueryUnescape("Hello%20World")
// Result: "Hello World"

Frequently Asked Questions

When should I encode URLs?

Always encode user input, search queries, or any data used in query strings, paths, or parameters. This prevents breaking URLs and security issues.

What's the difference between %20 and +?

Both represent spaces. %20 is the RFC 3986 standard (universal), while + only works in query strings (application/x-www-form-urlencoded). Use %20 for paths.

encodeURI vs encodeURIComponent?

encodeURI() preserves URL structure characters (:, /, ?, #). encodeURIComponent() encodes everything except alphanumerics. Use the latter for parameter values.

Do I need to encode the entire URL?

No. Only encode the dynamic parts (query values, path segments). The URL structure (protocol, host, slashes) should remain unencoded.

What about non-ASCII characters?

Non-ASCII characters (Γ©, δΈ­ζ–‡, ζ—₯本θͺž) are first converted to UTF-8 bytes, then each byte is percent-encoded. Modern browsers handle this automatically.

Is double encoding a problem?

Yes. Encoding already-encoded text creates issues like %2520 (encoded %20). Always decode first if unsure, then encode once.