URL Encoder/Decoder
Safely encode URI components or decode percent-encoded URLs and query strings.
Encode URI components, full URLs, form data, or strict RFC 3986 components, and decode percent-encoded text with clear malformed-input diagnostics.
Use URL Encoder/Decoder
Text or URL to Transform
Transformed Result
Built for the task, not the page view
- Component, strict RFC 3986, full-URL, and form-data encoding modes
- Percent-decoding with malformed-sequence validation
- Context-aware examples and reset controls
- Inline error locations for invalid percent encodings or Unicode surrogates
- Copy and text download for generated output
TextURLPercent-encoded StringEncoded TextDecoded TextUse it correctly
encodeURIComponent vs. encodeURI (Full URL)
encodeURIComponent encodes all reserved characters (?, &, =, /, :, #) for safe query parameter values. encodeURI preserves URL structure like protocol, host, and path slashes while escaping invalid characters.
Strict RFC 3986 encoding
Standard JavaScript leaves !, ', (, ), and * unencoded. Strict RFC 3986 mode percent-encodes these as %21, %27, %28, %29, and %2A, which is required for OAuth 1.0a and AWS signature verification.
Form URL-encoded (+ for spaces)
In application/x-www-form-urlencoded query strings, spaces are encoded as plus signs (+) instead of %20. Decode mode handles both + and %20 representations seamlessly.
Local browser transform
All URL encoding and decoding transformations run locally in your browser. Your input is not sent to an EveryTools transformation API or logged on any external server.
encodeURIComponent vs. encodeURI
Use encodeURIComponent when encoding individual query parameter keys, values, or single path segments. It safely percent-encodes reserved delimiters like &, =, /, ?, :, and # so data values do not collide with URL syntax.
Use encodeURI (Full URL) when encoding an entire web address. It preserves the protocol scheme (https://), hostname, path slashes, query start (?), and fragment identifiers (#), encoding only invalid characters such as spaces and international Unicode characters.
Strict RFC 3986 vs. Standard JavaScript
JavaScript’s native encodeURIComponent implements RFC 2396, which leaves !, ', (, ), and * unencoded.
The updated RFC 3986 standard specifies that these characters are reserved. Strict RFC 3986 mode percent-encodes them (%21, %27, %28, %29, %2A), which is required by API signing standards such as OAuth 1.0a HMAC signatures and AWS Signature Version 4.
Character Encoding Comparison
| Character | Raw | URI Component | Strict RFC 3986 | Full URL (encodeURI) | Form Data (x-www-form-urlencoded) |
|---|---|---|---|---|---|
| Slash | / | %2F | %2F | / | %2F |
| Question mark | ? | %3F | %3F | ? | %3F |
| Ampersand | & | %26 | %26 | & | %26 |
| Equals | = | %3D | %3D | = | %3D |
| Colon | : | %3A | %3A | : | %3A |
| Hash / Fragment | # | %23 | %23 | # | %23 |
| Space | | %20 | %20 | %20 | + |
| Exclamation mark | ! | ! | %21 | ! | ! |
| Single quote | ' | ' | %27 | ' | ' |
| Parentheses | ( ) | ( ) | %28 %29 | ( ) | ( ) |
| Asterisk | * | * | %2A | * | * |
| Accented letter | é | %C3%A9 | %C3%A9 | %C3%A9 | %C3%A9 |