URL Decoder

Encoders & Decoders

How to use the URL Decoder

Decode a percent-encoded URL in three steps:

1

Paste the encoded URL or string

Paste any percent-encoded text, URL, or query string into the input area. The footer shows how many %XX sequences are present.

2

Choose a decoding mode

Select decodeURIComponent (for individual values), decodeURI (for full URLs), or Form-encoded (also converts + to space for HTML form data). The toolbar describes what each mode does.

3

Copy the decoded output

The readable output appears instantly. An error is shown if any %XX sequence is malformed or incomplete.


When to use this tool

Use URL decoding to read percent-encoded URLs and extract original values:

  • Reading a browser URL bar or server log entry that contains unreadable %XX percent-encoded sequences
  • Extracting the original search query from a percent-encoded URL copied from a browser or analytics tool
  • Decoding a URL parameter value received in an API request to inspect its actual content
  • Decoding a redirect URL or OAuth callback parameter to read the destination or state value
  • Converting a percent-encoded form submission body back to readable key-value pairs for debugging
  • Inspecting encoded characters in a URL shared by a colleague or scraped from a web page

Frequently asked questions

Q:What does %20 mean in a URL?
%20 is the percent-encoded representation of a space character. The 20 is the hexadecimal value of ASCII code 32 (the space character). Percent-encoding replaces characters with a % sign followed by the character's two-digit hexadecimal code. So %20 = space, %40 = @, %2F = /, %3F = ?, %26 = &, and so on. The URL Decoder converts all such sequences back to their original characters.
Q:What is the difference between %20 and + for spaces?
Both %20 and + represent spaces in URL-encoded content, but in different contexts. %20 is the standard percent-encoding of the space character per RFC 3986 and is correct everywhere in a URL. The + sign as a space encoding is specific to the application/x-www-form-urlencoded format used by HTML form submissions — in this format, spaces are encoded as + rather than %20. Use the 'Form-encoded' decoding mode to handle + signs as spaces.
Q:Why does decoding fail with 'URI malformed'?
A 'URI malformed' error means the input contains a % sign followed by characters that are not valid two-digit hexadecimal values. Common causes: a % that is not part of an encoding sequence (should itself be encoded as %25), an incomplete sequence like %2 with only one hex digit, or invalid hex characters like %GZ. The tool shows a plain-English error message identifying the issue so you can locate and fix the malformed sequence.
Q:When should I use decodeURIComponent vs decodeURI?
Use decodeURIComponent when decoding individual query parameter values or path segments — it decodes all percent-encoded sequences including those that represent URL-structure characters like / : ? &. Use decodeURI when decoding a complete URL — it leaves the percent-encoded forms of URL-structure characters intact so the URL remains valid and parseable. Decoding a full URL with decodeURIComponent would destroy its structure by converting %2F back to / inside a path value.
Q:Can I decode multiple URLs at once?
The tool decodes the entire input as one string. To decode multiple URLs at once, paste them one per line and use decodeURI mode — each URL will be decoded in context. Alternatively, paste all URLs in one textarea and decode the whole block. Because the decoding is done in one pass, all %XX sequences in the input are decoded simultaneously, regardless of whether the input is a single URL or many.
Q:Does the decoder handle Unicode percent-encoded sequences like %C3%A9?
Yes — multi-byte UTF-8 sequences are fully handled. %C3%A9 decodes to é (U+00E9), %F0%9F%8E%89 decodes to 🎉, and any other UTF-8 encoded Unicode character is recovered correctly. The JavaScript decodeURIComponent function interprets percent-encoded byte sequences as UTF-8, which is the correct and universal interpretation for modern URLs.