Input

Mode:

Output

Formatted result will be displayed here

How does percent decoding work?

A percent decoder walks the string, and whenever it sees a percent sign it reads the next two hex digits as a byte and replaces the three-character sequence with the raw byte. Those bytes are then interpreted as UTF-8 so non-ASCII characters appear correctly. This tool accepts input from any URL component: query strings, path segments, fragments, or form bodies, and it leaves unencoded characters alone.

Use Cases

Read encoded query parameters

Turn a noisy URL full of percent sequences into a clear list of human-readable parameters during debugging.

Unwrap redirect URLs

Login and auth flows often percent-encode a redirect_uri. Decode to see where the browser is actually going.

Inspect referrer headers

Referrer values in server logs are percent-encoded. Decode them to get a readable request trail.

Reverse double encoding

Sometimes a URL is encoded twice. Decode once, check the result, and decode again if you still see percent sequences.

FAQ

What if a percent sign is not followed by hex?

You will get a decode error pointing at the bad position. Real URLs that hit this are usually malformed or already partially decoded.

Does it treat plus as space?

Strict percent decoding leaves + alone. Form-encoded data uses + for space, so handle that separately if you are parsing a form body.

How are multi-byte characters handled?

Consecutive percent sequences are combined into UTF-8 bytes before the decoder assembles them into a single codepoint.

Is this different from HTML entity decoding?

Yes. HTML decoding handles & style entities. Percent decoding handles %XX hex byte sequences. Different contexts, different schemes.