How URL Percent-Decoding Operates
When web browsers submit form requests or redirect through authentication providers, special characters and spaces are converted into percent-encoded triplets (a % symbol followed by two hexadecimal digits). URL decoding interprets these hexadecimal byte sequences, unescapes query parameters, and reconstructs the original human-readable strings under the RFC 3986 specification.
Resolving Multi-Pass Nested Encodings
Complex redirects often encode strings multiple times, converting %20 into %2520. Our recursive multi-pass feature automatically iterates through nested encoding layers until all percent sequences are safely unpacked.
Form Plus (+) vs Percent Space (%20)
According to the HTML form specification (application/x-www-form-urlencoded), spaces are frequently submitted as + instead of %20. The dedicated toggle allows you to seamlessly restore spaces from legacy form submissions.
Frequently Decoded Characters Reference
| Encoded Token | Decoded Literal | Character Purpose | Typical Source |
|---|---|---|---|
| %20 or + | (space) | Whitespace separator | Search queries & text fields |
| %3A%2F%2F | :// | Protocol delimiter | OAuth return URLs & redirects |
| %3F and %3D | ? and = | Query initializer & assignment | Deep link query strings |
| %26 | & | Parameter chain separator | Multi-variable API requests |
| %23 | # | Fragment anchor identifier | Single Page App (SPA) routes |
Frequently Asked Questions
Why do some URLs have double or triple percent-encoding?
When URLs pass through multiple redirect proxies, web forms, or nested query parameters, percent signs are encoded repeatedly (e.g., '%' becomes '%25', turning '%20' into '%2520'). Enabling the "Recursive Multi-Pass Decode" toggle strips repeated encoding layers until the true string is reached.
Does this tool convert plus signs (+) back into spaces?
Yes. When the "Decode Plus (+) as Space" option is checked, '+' characters generated by form encodings (application/x-www-form-urlencoded) are translated into standard space characters.
Is my decoded URL or query payload logged or sent to an external server?
No. The entire decoding algorithm runs locally in your browser memory via JavaScript. No data is stored, tracked, or sent across any network connection.