Percent Encoding Decoder
Decode percent-encoded URL text into readable Unicode. Convert sequences such as %20, %2F, %E2%82%AC and %F0%9F%98%80 while validating UTF-8, inspecting encoded bytes and optionally treating plus signs as spaces for form-style URL data.
—
—
—
Percent Encoding Decoder
The Percent Encoding Decoder converts percent-encoded URL data back into readable text. Percent encoding represents bytes using a percent sign followed by two hexadecimal digits. For example, a space can be written as %20, a forward slash as %2F and UTF-8 encoded Unicode characters can require several consecutive %XX sequences.
This decoder supports ordinary ASCII escapes as well as multi-byte UTF-8 sequences used for accented letters, international writing systems, symbols and emoji. It also validates malformed percent escapes and invalid UTF-8 sequences instead of silently producing unreliable text.
You can use the tool when inspecting query strings, URL parameters, API requests, redirects, browser data, encoded paths, form submissions or any text containing URL-style percent escapes.
How to Decode Percent Encoding
Paste the encoded text into the input box and select the appropriate decoding behavior. In most cases, URL Component / UTF-8 is the correct option for decoding a query parameter, path segment or standalone encoded value.
Press Decode Percent Encoding. The converter validates each percent escape and reconstructs the original text.
Encoded:
Hello%20World
Decoded:
Hello WorldEvery percent escape must contain exactly two hexadecimal digits. A sequence such as %20 is valid, while an incomplete sequence such as %2 is malformed.
What Is Percent Encoding?
Percent encoding is a method for representing bytes inside URI and URL-related text. An encoded byte is written as the percent character followed by its two-digit hexadecimal value.
| Character | Byte | Percent Encoding | Meaning |
|---|---|---|---|
| Space | 20 | %20 | Space character |
| ! | 21 | %21 | Exclamation mark |
| # | 23 | %23 | Number sign |
| % | 25 | %25 | Percent sign |
| / | 2F | %2F | Forward slash |
| ? | 3F | %3F | Question mark |
Decode %20 to a Space
One of the most common percent-encoded values is %20. Hexadecimal 20 equals decimal 32, which corresponds to the ASCII and UTF-8 byte for a space.
Input:
hello%20world
Output:
hello world
%20
→ hexadecimal byte 20
→ decimal byte 32
→ spaceDecode UTF-8 Percent Encoding
Percent escapes fundamentally represent bytes. Unicode characters outside ordinary ASCII are normally first converted into UTF-8 bytes, and then each byte is represented as a separate %XX escape.
Character:
€
UTF-8 bytes:
E2 82 AC
Percent encoded:
%E2%82%AC
Decoded:
€The decoder must therefore interpret E2 82 AC as one valid three-byte UTF-8 sequence rather than treating those three bytes as unrelated characters.
Percent Encoding Example for Emoji
Many emoji require four UTF-8 bytes. Each of those bytes receives its own percent escape.
Character:
😀
Unicode:
U+1F600
UTF-8:
F0 9F 98 80
Percent encoding:
%F0%9F%98%80
Decoded:
😀This is why one visible Unicode character may occupy twelve characters in a percent-encoded string: four percent signs plus eight hexadecimal digits.
Percent Encoding and Hexadecimal Bytes
The two characters following a percent sign are hexadecimal digits. They represent one byte ranging from 00 through FF.
%41 = hexadecimal 41 = decimal 65 = A
%20 = hexadecimal 20 = decimal 32 = space
%2F = hexadecimal 2F = decimal 47 = /
%25 = hexadecimal 25 = decimal 37 = %Percent encoding should therefore be understood at the byte level rather than as a special alphabet for Unicode characters.
Percent Encoding vs URL Encoding
The terms percent encoding and URL encoding are often used interchangeably, although URL processing can involve additional rules depending on whether data appears in a path, query string, fragment or form submission.
Percent encoding specifically refers to the %XX representation of a byte. For example, %2F represents byte 2F and %E2%82%AC represents the three UTF-8 bytes of the euro sign.
Form-style encoding introduces another common behavior: a plus sign may represent a space. This is why the decoder provides a separate option for converting plus signs to spaces.
Plus Sign vs %20 for Spaces
A literal URI percent escape for a space is %20. However, HTML form data using the application/x-www-form-urlencoded convention commonly uses a plus sign for a space.
Percent-encoded space:
hello%20world
Form-style space:
hello+world
Possible decoded value:
hello worldA plus sign is not universally equivalent to a space. For that reason, this tool keeps + unchanged by default and only converts it when you select Convert + to Space.
URL Component vs Full URI Decoding
Decoding a standalone URL component can differ from decoding an entire URI. Reserved delimiters such as slash, question mark, ampersand or hash may have structural meaning in a full URL.
Encoded component:
folder%2Ffile
Component decoding:
folder/file
A full URI decoder may preserve certain reserved escapes
to avoid changing URI structure.Use component mode for query parameter values, encoded names and standalone strings. Full URI mode is useful when you want behavior closer to decoding an entire URI while retaining reserved syntax.
Malformed Percent Encoding
A valid percent escape requires a percent sign followed immediately by two hexadecimal digits from 0–9, A–F or a–f.
Valid:
%20
%2F
%E2
Invalid:
%
%2
%G1
%ZZMalformed escapes often appear when encoded data is truncated, manually edited or encoded incorrectly. This decoder reports these errors rather than guessing what the missing byte was intended to represent.
Invalid UTF-8 Percent Sequences
A sequence may contain syntactically valid %XX escapes and still fail Unicode decoding. For example, certain byte combinations do not form a valid UTF-8 sequence.
The decoder uses strict UTF-8-aware browser decoding. In component mode, invalid continuation bytes, truncated multibyte sequences and other malformed UTF-8 data produce an error instead of silently inserting a replacement character.
Valid:
%E2%82%AC
→ €
Valid:
%F0%9F%98%80
→ 😀
Incomplete:
%E2%82
→ decoding errorDouble Percent Encoding
Sometimes data is percent encoded more than once. The percent sign itself is encoded as %25, so a second encoding layer can transform %20 into %2520.
Original:
space
First encoded representation:
%20
Percent sign encoded again:
%2520
Decode once:
%20
Decode again:
spaceThis tool performs one decoding pass each time you press the decode button. That behavior is safer than automatically decoding repeatedly, because repeated decoding can unexpectedly change data that is intended to contain literal percent escapes.
Percent Encoding in Query Strings
Query parameters frequently contain percent-encoded values because user text may include spaces, Unicode characters or characters with special URL meaning.
Encoded value:
search=hello%20world
Value after decoding:
hello world
Encoded Unicode:
currency=%E2%82%AC
Decoded value:
€When working with form-generated query strings, remember that spaces may also appear as plus signs depending on the encoding convention used.
Percent Encoding in URL Paths
URL paths can contain percent escapes for characters that cannot or should not appear literally. A path segment may include encoded spaces, Unicode characters or punctuation.
Encoded:
files/My%20Document.pdf
Decoded:
files/My Document.pdfTake care when decoding reserved path delimiters such as %2F because converting them into literal slashes can alter the structural meaning of the URL.
Percent Encoding vs HTML Entities
Percent encoding and HTML character references solve different problems. Percent encoding represents bytes in URI-related data, while HTML entities or numeric references represent characters in HTML markup.
Euro sign:
Percent encoding:
%E2%82%AC
HTML hexadecimal reference:
€
HTML decimal reference:
€
Visible character:
€Do not decode HTML entities with a percent decoder or treat %XX sequences as HTML references.
Common Uses for a Percent Encoding Decoder
Percent decoding is useful when debugging URLs, inspecting redirect parameters, reading encoded API requests, examining browser query strings or investigating values stored in logs and analytics systems.
Developers may also use a percent decoder while testing OAuth callback parameters, encoded file names, REST API paths, webhooks, search query values, tracking parameters and internationalized text transported through URLs.
Typical debugging workflow
Paste the suspicious encoded value, decode it once, inspect the resulting text and review the percent escape breakdown. If the result still contains sequences such as %20 or %2F, the source may have been encoded more than once.
Common Percent Decoding Mistakes
One common mistake is automatically converting every plus sign into a space. That behavior is appropriate for form-style data but not for every URL or arbitrary encoded string.
Another mistake is assuming that one %XX sequence corresponds to one Unicode character. Percent escapes represent bytes, so characters such as € and 😀 require several UTF-8 bytes and therefore several escapes.
Repeatedly decoding data without understanding its source can also be dangerous because encoded delimiters such as %2F, %26 or %3D may become structural characters after decoding.
Percent Encoding Decoder Limitations and Notes
This tool performs a single decoding pass. It does not automatically repeat decoding until no percent escapes remain.
Component mode expects percent-encoded non-ASCII data to represent valid UTF-8. Legacy systems may occasionally use another character encoding, in which case ordinary UTF-8 URL decoding may fail or produce a different result.
The tool analyzes text locally in your browser and does not fetch, request or visit any URL entered into the input box.