% URL Encoding Utility

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 Decode ✓ UTF-8 Validation ✓ URL Escapes ✓ %XX Bytes ✓ + to Space ✓ Unicode Output
%XX
Percent Decode
● Ready
Enter a percent-encoded string such as Hello%20World or %E2%82%AC. Ordinary unescaped characters may be mixed with %XX sequences.
Decode Options
Component mode decodes all valid percent escapes. Full URI mode preserves escapes for reserved URI delimiters where JavaScript decodeURI does.
Use + → space for application/x-www-form-urlencoded style values.
Percent encoding: A percent escape contains a percent sign followed by two hexadecimal digits representing one byte. Non-ASCII Unicode characters normally appear as multiple percent-encoded UTF-8 bytes.
Percent Decoding Result Decoded
Decoded Text
Input Length
Output Characters
%XX Escapes
Encoded Bytes
UTF-8 Sequences
Plus Signs
Unicode Points
Status
Percent Escape Breakdown
Decoding Details

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 World

Every 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
Space20%20Space character
!21%21Exclamation mark
#23%23Number sign
%25%25Percent sign
/2F%2FForward slash
?3F%3FQuestion 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 → space

Decode 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 world

A 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 %ZZ

Malformed 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 error

Double 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: space

This 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.pdf

Take 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.

Percent Encoding Decoder FAQs

What is percent encoding?
Percent encoding represents a byte as a percent sign followed by two hexadecimal digits, such as %20 for byte 20 hexadecimal.
What does %20 decode to?
%20 represents hexadecimal byte 20, which is a space character in ASCII and UTF-8.
What does %2F decode to?
%2F represents hexadecimal byte 2F, which is the forward slash character /.
What does %25 decode to?
%25 decodes to the literal percent sign %.
How is € percent encoded?
The euro sign uses UTF-8 bytes E2 82 AC, so its percent-encoded form is %E2%82%AC.
How is 😀 percent encoded?
The grinning face U+1F600 uses UTF-8 bytes F0 9F 98 80 and is represented as %F0%9F%98%80.
Does a plus sign always mean a space?
No. Plus-to-space conversion is associated with form-style URL encoding. A literal plus sign should remain + in other contexts.
Can this decoder handle UTF-8 characters?
Yes. Valid percent-encoded UTF-8 byte sequences are decoded into their Unicode characters.
Can I decode a complete URL?
Yes. Full URI mode provides behavior appropriate for decoding a URI while preserving certain reserved escapes. Component mode is generally better for individual parameter values or encoded segments.
What is double percent encoding?
Double encoding occurs when an already percent-encoded value is encoded again. For example, %20 can become %2520 because %25 represents the percent sign.
Why does %2520 decode to %20 instead of a space?
Because one decoding pass converts %25 into %, leaving %20. A second decoding pass would then convert %20 into a space.
What happens if a percent escape is incomplete?
An escape such as % or %2 is malformed because exactly two hexadecimal digits are required after the percent sign. The tool reports an error.
Can valid %XX bytes still contain invalid UTF-8?
Yes. The percent syntax may be valid while the reconstructed byte sequence is invalid UTF-8. Strict decoding then produces an error.
Is percent encoding the same as Base64?
No. Percent encoding represents individual bytes with %XX notation, while Base64 uses a separate text alphabet to represent binary data.
Does this decoder open or visit the URL I enter?
No. It only processes the supplied text locally in the browser and does not make network requests.
Scroll to Top