Decode percent-encoded URLs back to readable text, with an optional plus-as-space rule and a repeat mode that unwraps double-encoded values such as %253A.
Show calculation steps
Processed privately in your browser — nothing you paste is uploaded, logged or stored.
Percent-decoding a whole URL
This decodes an entire URL and shows what each part actually contains, which is normally what you want when a link has arrived mangled and you need to see where the damage is rather than just that it exists.
Worked example
https://example.com/search?q=caf%C3%A9&page=2 path /search q café page 2
Why splitting the parts helps
A URL is not one string: scheme, host, path, query and fragment each have their own rules about what must be escaped. Decoding the whole thing as flat text hides which component a stray character belongs to, and that component is usually the answer.
What to look for
%25 means something was encoded twice. A plus where you expected a space means form encoding. A + or a space inside a path segment means the URL was assembled without encoding at all. Each has a different fix upstream.
Limits
Decoding shows what is there; it does not fetch the URL, validate it or check where it leads. Everything is processed in your browser, which is the point when the URL contains a token.
How to use the URL Decoder
- Paste the encoded URL or value.
- Turn on "Treat + as a space" if the text came from a submitted HTML form.
- Turn on "Decode repeatedly" when you suspect double encoding – the tool reports how many passes it needed.
- Click "Decode URL".
Frequently asked questions
Why does my result still contain percent signs?
Because the value was encoded more than once. Each pass removes one layer, so enable "Decode repeatedly" and the tool will unwrap it and tell you how many rounds were required.
The decoder reports an invalid escape. What does that mean?
A percent sign must be followed by exactly two hexadecimal digits. A bare percent – as in "50% off" – is invalid inside a URL and must itself be written as %25. The error gives the exact position of the problem.
Why do I sometimes get an error about invalid UTF-8?
The percent-escapes decoded to a byte sequence that is not valid UTF-8. Usually the original text was encoded using a legacy character set such as Windows-1252, or the string was truncated mid-character.
Is it safe to open a URL after decoding it here?
Decoding only reveals the text; it never fetches anything. Treat the revealed destination with the same caution as any unfamiliar link – seeing it in plain form is exactly the point of decoding it first.
Read a long URL
The parameters out of a percent-encoded URL, laid out so you can read them.
- URL Decoder you are hereTurn the percent-encoding back into readable characters.
- Query String ParserSplit the query into its individual parameters.
- JSON FormatterRead the parsed parameters as formatted JSON.