URL Encoder Decoder Online: The Complete Guide
Learn how URL percent encoding works, when to use it, how to encode and decode URLs online, and common mistakes to avoid.
Last updated: May 4, 2026
What is URL encoding (percent encoding)?
URL encoding — formally called percent encoding — replaces characters that are not allowed or have special meaning in URLs with a % followed by two hexadecimal digits representing the character's byte value. For example, a space becomes %20, an ampersand becomes %26, and an equals sign becomes %3D.
URLs have a defined syntax where certain characters have structural meaning (/ separates path segments, ? starts the query string, & separates query parameters,= separates parameter names from values). When data values contain these characters, they must be encoded so the URL parser does not confuse them with structural syntax.
A concrete encoding example
Original URL with special characters
https://api.example.com/search?q=hello world&lang=en&filter=a>bProperly encoded URL
https://api.example.com/search?q=hello%20world&lang=en&filter=a%3EbThe space in hello world becomes %20. The > becomes %3E. The & separating parameters is left unencoded because it is a structural character, not a value character.
encodeURIComponent vs encodeURI: when to use which
This is the most confusing aspect of URL encoding in JavaScript:
encodeURIComponent() — for query parameter values
Encodes everything except letters, digits, and - _ . ! ~ * ' ( ). This includes /, ?, &, =, #, and :. Use this when encoding individual query parameter values so they don't break the query string structure.
encodeURIComponent('hello & goodbye')
// → 'hello%20%26%20goodbye'encodeURI() — for full URLs
Encodes characters not valid in a URI but preserves structural characters like /, ?, &, =, #, and :. Use this when encoding a full URL that already has proper structure but may contain invalid characters like spaces.
encodeURI('https://example.com/search?q=hello world')
// → 'https://example.com/search?q=hello%20world'Rule of thumb: If you're encoding a query parameter value, use encodeURIComponent. If you're encoding a complete URL, use encodeURI. When in doubt, use encodeURIComponent.
Common URL encoding use cases
Building query strings with user input
Any user input going into a URL query parameter must be encoded. If a user searches for "C++ developer", the + characters must be percent-encoded (%2B) or they will be interpreted as spaces by the receiving server.
Decoding received URL parameters
When an API receives a URL parameter like email=alice%40example.com, it needs to decode %40 back to @ before using the value. Most frameworks do this automatically, but when debugging raw request logs, a URL decoder is essential.
Debugging API requests in logs
Server access logs contain percent-encoded URLs. Paste a log entry's URL into the URL Decoder to read the original request path and parameters without manually decoding each %XX sequence.
OAuth and authentication redirects
OAuth 2.0 flows include redirect_uri and state parameters that are themselves full URLs with special characters. These must be encoded within the outer URL. Debugging OAuth failures often requires decoding the nested URL to see the actual redirect target.
% encoding reference table
Space→%20!→%21"→%22#→%23$→%24%→%25&→%26'→%27(→%28)→%29+→%2B,→%2C/→%2F:→%3A;→%3B=→%3D?→%3F@→%40[→%5B]→%5DFrequently asked questions
Why does a space sometimes become + instead of %20?
HTML forms use application/x-www-form-urlencoded format, which encodes spaces as +. Standard RFC 3986 percent encoding uses %20. Both are valid in their respective contexts. The Vultio URL encoder uses %20 (RFC 3986), which is safe everywhere.
What characters do NOT need to be encoded in a URL?
Unreserved characters — letters (A–Z, a–z), digits (0–9), and - _ . ~ — are safe in any URL component and never need encoding. Everything else should be encoded when it appears as data rather than URL structure.
Can I double-encode a URL?
Yes, and it is a common bug. If you encode an already-encoded URL, the % signs themselves get encoded to %25, producing strings like %2520 instead of %20. Always decode first if the value may already be encoded.
Is URL encoding the same as HTML entity encoding?
No. HTML entity encoding (e.g. & for &) is for HTML context. URL encoding (e.g. %26 for &) is for URL context. Using the wrong encoding in the wrong context causes display or parsing bugs.
Does URL encoding send my data to a server?
No. The Vultio URL Encoder / Decoder processes everything client-side in your browser using native JavaScript. No data is transmitted anywhere.