URL Decode
Turn %20 and friends back into readable text.
About this converter
Percent-encoded text is unreadable by design, which is a problem when you are reading a log line or working out what a redirect actually points at.
This turns it back. Plus signs are treated as spaces as well as %20, because form submissions use the former and half the strings people paste here come out of one.
If it refuses, the usual cause is a lone % that is not followed by two hex digits — often because the text was decoded once already, or because a literal percent sign was never escaped as %25 in the first place.
Frequently asked questions
Why does it say the encoding is not valid?
A % has to be followed by exactly two hexadecimal digits. A bare % — in "100% done", say — is not valid percent-encoding, and neither is a string that has already been decoded once. If the text looks half-readable already, it probably has been.
My result still has %2520 in it.
That is double-encoded: %25 is an encoded % sign, so %2520 decodes to %20, which decodes again to a space. Run it through a second time. It usually means a URL was encoded as a value and then encoded again as part of the whole address.
Are + and %20 the same thing?
In a query string, in practice, yes — both mean a space. %20 is the correct percent-encoding; + is the HTML form convention. This decoder handles both, because you rarely know which produced the string you are looking at.
Does what I paste get sent anywhere?
No. The conversion runs in your browser, on your own machine — that is why the result appears as you type rather than after a wait. Nothing is uploaded, nothing is logged, and closing the tab is the end of it. This matters more here than on most pages: tokens, keys and internal data get pasted into tools like this constantly, and most of them are a form that posts to a server.