URL Decoder
Decode %XX percent-encoding back to readable UTF-8 text. Optional + as space for query strings; malformed sequences are kept and reported, not lost.
42 characters · 42 bytes (UTF-8)
0 characters · 0 bytes (UTF-8)
Runs entirely in your browser. Your data is never uploaded.
What is URL Decode?
Converts percent-encoded text (%C3%A9, %20…) back to readable characters using UTF-8. Unlike decodeURIComponent, it does not fail on a single bad sequence: malformed % codes are left as they are and counted.
How to use URL Decode
- Paste the encoded URL or value into Input.
- Tick Decode + as a space (query strings) if the text comes from a form or query string.
- Read the result in Output and check the warning if malformed sequences were found.
Example
caf%C3%A9+%zz
café %zz
With "Decode + as a space" enabled; %zz is malformed and kept.
When to use URL Decode
Use it to read encoded URLs from logs, redirects, tracking links or API requests. Decode only once: decoding an already-decoded string can change literal % signs.
How URL Decode works
The input is scanned for runs of %XX. Each run is turned into bytes and decoded as UTF-8; valid multi-byte sequences become characters. A % not followed by two hex digits, or bytes that do not form valid UTF-8, are copied unchanged and counted in a warning. + becomes a space only when the option is enabled.
Common Use Cases
- Reading UTM or redirect parameters in marketing links
- Debugging double-encoded URLs
- Decoding form submissions captured in logs
- Restoring non-ASCII slugs to readable text
FAQs
Why is + not turned into a space?
In URL paths + is a literal plus sign. Only form-encoded query strings use it for spaces, so it is an option.
What happens with invalid sequences like %zz or %E2%82?
They are left unchanged and the tool shows how many were found, instead of throwing a "URI malformed" error.
My text is still encoded after decoding.
It was probably encoded twice. Click Use as input and decode again.