URL encoder, decoder and query string parser
Percent-encode or decode text for URLs, and paste any URL to see its query parameters decoded in a table.
🔒 Runs entirely in your browser. Nothing you paste is uploaded or sent to a server.
Query string parser
encodeURIComponent vs. encodeURI
| Function | Leaves unencoded | Use it for |
|---|---|---|
encodeURIComponent |
A-Z a-z 0-9 - _ . ! ~ * ' ( ) |
a single query value or path segment |
encodeURI |
the above plus ; , / ? : @ & = + $ # |
a whole URL that is already structured |
Use encodeURIComponent for values: ?q= + encodeURIComponent("a&b=c") gives ?q=a%26b%3Dc. With encodeURI the & and = would stay and split your value into a second parameter. In most languages the safer equivalent is a query builder: URLSearchParams (JS), urllib.parse.urlencode (Python), url.Values (Go).
Common percent-encodings
| Character | Encoded | Character | Encoded |
|---|---|---|---|
| space | %20 (or + in forms) |
& |
%26 |
/ |
%2F |
= |
%3D |
? |
%3F |
# |
%23 |
% |
%25 |
+ |
%2B |
@ |
%40 |
é |
%C3%A9 (UTF-8 bytes) |
+ or %20?
In HTML form data (application/x-www-form-urlencoded) and in query strings parsed by most servers, + means space. In a URL path, + is a literal plus. That is why a + in a value must be sent as %2B, and why the decoder has a "+ as space" option. Decoding fails with URIError: malformed URI sequence when a % is not followed by two hex digits; this tool points at the bad %.
Encoding bugs show up as broken redirects and callback URLs: a redirect_uri or next= parameter that is not encoded can loop (ERR_TOO_MANY_REDIRECTS) or point at the wrong origin (CORS errors).
Last updated 2026-11-01.