%url-decoder.net

Percent-encoding table

Every ASCII character that can need encoding in a URL, with its RFC 3986 class and whether encodeURIComponent, encodeURI and form encoding escape it. Letters A–Z, a–z and digits 0–9 never need encoding.

Unreserved

A–Z a–z 0–9 - . _ ~

Never need encoding.

Reserved: gen-delims

: / ? # [ ] @

Split a URL into its parts.

Reserved: sub-delims

! $ & ' ( ) * + , ; =

Delimit data inside a part.

Everything else

space " % < > \ ^ ` { | }

Must always be encoded.

ASCII characters and their percent-encoding
CharNameEncodedDecRFC 3986encodeURIComponentencodeURIForm / URLSearchParams
NULNull%000control%00%00%00
TABHorizontal tab%099control%09%09%09
LFLine feed%0A10control%0A%0A%0A
CRCarriage return%0D13control%0D%0D%0D
SPSpace%2032unsafe%20%20+
!Exclamation mark%2133sub-delimkeptkept%21
"Quotation mark%2234unsafe%22%22%22
#Number sign (hash)%2335gen-delim%23kept%23
$Dollar sign%2436sub-delim%24kept%24
%Percent sign%2537unsafe%25%25%25
&Ampersand%2638sub-delim%26kept%26
'Apostrophe%2739sub-delimkeptkept%27
(Left parenthesis%2840sub-delimkeptkept%28
)Right parenthesis%2941sub-delimkeptkept%29
*Asterisk%2A42sub-delimkeptkeptkept
+Plus sign%2B43sub-delim%2Bkept%2B
,Comma%2C44sub-delim%2Ckept%2C
-Hyphen-minus%2D45unreservedkeptkeptkept
.Full stop%2E46unreservedkeptkeptkept
/Solidus (slash)%2F47gen-delim%2Fkept%2F
:Colon%3A58gen-delim%3Akept%3A
;Semicolon%3B59sub-delim%3Bkept%3B
<Less-than sign%3C60unsafe%3C%3C%3C
=Equals sign%3D61sub-delim%3Dkept%3D
>Greater-than sign%3E62unsafe%3E%3E%3E
?Question mark%3F63gen-delim%3Fkept%3F
@Commercial at%4064gen-delim%40kept%40
[Left square bracket%5B91gen-delim%5B%5B%5B
\Reverse solidus (backslash)%5C92unsafe%5C%5C%5C
]Right square bracket%5D93gen-delim%5D%5D%5D
^Circumflex accent%5E94unsafe%5E%5E%5E
_Low line (underscore)%5F95unreservedkeptkeptkept
`Grave accent (backtick)%6096unsafe%60%60%60
{Left curly bracket%7B123unsafe%7B%7B%7B
|Vertical line (pipe)%7C124unsafe%7C%7C%7C
}Right curly bracket%7D125unsafe%7D%7D%7D
~Tilde%7E126unreservedkeptkept%7E

Cells show each function's output for that character; “kept” means it is left as-is. Generated from the JavaScript engine's own functions and checked against RFC 3986 §2 and the WHATWG URL Standard. Free to reuse under CC BY 4.0 with a link back.

Non-ASCII characters become several bytes

URLs encode text as UTF-8 first, then percent-encode each byte. One character can therefore become two, three or four %XX groups. Paste any of these into the URL Decoder to see the bytes grouped back into characters.

éU+00E9

%C3%A9

Latin small letter e with acute · 2 bytes

üU+00FC

%C3%BC

Latin small letter u with diaeresis · 2 bytes

€U+20AC

%E2%82%AC

Euro sign · 3 bytes

日U+65E5

%E6%97%A5

CJK ideograph (sun, day) · 3 bytes

✓U+2713

%E2%9C%93

Check mark · 3 bytes

😀U+1F600

%F0%9F%98%80

Grinning face emoji · 4 bytes

Sources

Behaviour checked against RFC 3986, the WHATWG URL Standard and MDN. Updated October 3, 2026