Strict percent checks
Reject a percent sign that is not followed by exactly two hexadecimal digits.
Start typing to search 227 tools.
Decode valid percent-encoded UTF-8 text while preserving literal plus signs for accurate URL-component inspection.
URL Decoder converts valid %HH byte sequences into readable UTF-8 text. It rejects incomplete or non-hexadecimal percent escapes and reports data that does not decode to valid UTF-8.
The decoder uses component-style behavior comparable to decodeURIComponent(). A literal plus sign remains +; it is not changed to a space. This differs from traditional form-query decoding, where plus is often interpreted as a space.
Decode only the intended layer. A second decoding pass can turn previously protected separators into active URL syntax, changing the meaning of a redirect, path, or query value.
Focused controls, predictable output, and a workflow designed around this exact transformation.
Reject a percent sign that is not followed by exactly two hexadecimal digits.
Report decoded byte sequences that cannot be interpreted as UTF-8 text.
Keep literal plus signs unchanged instead of applying form-query space conversion.
The guide explains how additional decoding passes can activate hidden separators.
Practical details about input, output, privacy, limits, and the best way to use this tool.
It decodes valid percent-encoded bytes and requires the resulting text to be valid UTF-8.
No. Literal plus signs remain plus. Use a query-string parser when form-style plus-to-space handling is required.
It decodes to a space character.
Every percent escape must contain two hexadecimal digits, so the sequence is incomplete.
You can, but decoding structural separators may change how the URL is interpreted. Component-level decoding is safer for inspection.
It means decoding the output again. For example, %252F becomes %2F first and a slash only on the second pass.
No. Validate redirects, paths, identifiers, and other decoded values according to application rules.
No. Percent encoding is a reversible text representation, not encryption.
Learn percent-encoding, UTF-8 URLs, query strings, path segments, spaces, plus signs, and double-encoding mistakes.
A percent escape contains % followed by two hexadecimal digits representing one byte. ASCII characters commonly use one byte, while Ukrainian text, emoji, and many other Unicode characters require multiple UTF-8 bytes and therefore several adjacent escapes.
The decoder validates the final byte sequence as UTF-8. If the original source used another character encoding, technically valid bytes may not produce the expected text.
Component decoding and HTML form-query decoding treat plus signs differently. This tool preserves + as a literal plus. A percent-encoded %2B also becomes plus, while %20 becomes space.
If the source is a complete query string such as q=blue+shoes, use Query String Parser to apply form-style parameter rules and inspect repeated names.
Nested URLs and redirects may be encoded more than once. Decode one layer, inspect the result, and stop unless the protocol explicitly requires another pass. Blind repeated decoding can turn protected slashes, ampersands, or path traversal sequences into active syntax.
Signed URLs are especially sensitive because changing the byte representation may invalidate the signature. Preserve the original value for comparison.
A bare percent sign, a one-digit escape, or non-hexadecimal characters after percent are rejected. When output looks corrupted despite valid escapes, verify the original character encoding and whether the input was already decoded earlier in the pipeline.
Do not repair malformed security-sensitive values by guessing missing characters. Return a clear validation error to the caller instead.
Decoding can reveal separators, scripts, control data, or redirect destinations that were hidden in the encoded form. Apply path normalization, allowlists, output escaping, authorization, and domain-specific validation after decoding at the appropriate boundary.
Create a component value with URL Encoder, parse full parameters with Query String Parser, or inspect a complete address using URL Parser.
See RFC 3986 for URI syntax and the MDN documentation for decodeURIComponent().