URL Decoder

Percent-encoded

Decoded

https://example.com/search?q=hello world&lang=en

About the URL Decoder

A percent-decoder that updates live as you paste. Drop in a URL-encoded string — a query parameter, a full URL, anything with %XX escapes — and get plain text back instantly, with a clear error message if the input isn't validly encoded.

Useful for reading a query string pulled from server logs, an OAuth redirect URL, or a webhook payload where the readable value is buried behind percent escapes — decode it once here instead of mentally converting %20s and %3Fs by hand.

How to Use the URL Decoder

1

Paste a percent-encoded string into the input panel.

2

View the decoded plain text, or a clear error if it isn't validly encoded.

3

Copy the decoded result.

Frequently Asked Questions

Is my text sent anywhere?

No. Decoding happens entirely in your browser using standard JavaScript — nothing you paste is sent to a server.

What does this tool actually undo?

It reverses percent-encoding — %XX sequences like %20 (space) or %3F (?) — regardless of whether the original text was produced with encodeURIComponent or encodeURI. Both produce the same kind of escapes; this just unescapes them back to plain text.

Why do I get an error on some input?

A percent-encoded string is invalid if it has a "%" not followed by two hex digits, or an escape sequence that doesn’t form valid UTF-8. That usually means the text wasn’t actually percent-encoded, or got double-encoded/truncated somewhere along the way — the error message here tells you decoding failed rather than silently returning garbage.

Can I decode a value that was encoded twice?

Run it through the decoder twice — once to undo each layer of encoding. A double-encoded value still decodes fine on the first pass; it just leaves you with a still-encoded string that needs a second pass.