DevToolsForYou

URL Encoding Cheatsheet

A quick reference for percent-encoding rules, reserved vs unreserved characters, query string encoding, and common encoded values.

Updated Apr 11, 2026
Try the URL Encoder / Decoder

Sections

  1. Unreserved Characters (never encoded)
  2. Reserved Characters (encoded in query/fragment)
  3. Encoding Rules
  4. Common Encoded Values

Unreserved Characters (never encoded)

SetCharacters
Uppercase lettersA B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Lowercase lettersa b c d e f g h i j k l m n o p q r s t u v w x y z
Digits0 1 2 3 4 5 6 7 8 9
Safe symbols- _ . ~

Reserved Characters (encoded in query/fragment)

CharacterEncodedPurpose
Space%20 (or + in form data)Word separator
!%21General delimiter
#%23Fragment delimiter
$%24Sub-delimiter
&%26Query parameter separator
'%27Sub-delimiter
(%28Sub-delimiter
)%29Sub-delimiter
*%2ASub-delimiter
+%2BEncoded plus (space in form data)
,%2CSub-delimiter
/%2FPath segment delimiter
:%3AScheme/port delimiter
;%3BSub-delimiter
=%3DKey=value separator
?%3FQuery string start
@%40Authority delimiter
[%5BIPv6 address delimiter
]%5DIPv6 address delimiter

Encoding Rules

RuleDetail
Percent-encodeReplace byte with % followed by two uppercase hex digits — e.g. space → %20
UTF-8 firstMulti-byte characters are encoded as their UTF-8 byte sequence, each byte percent-encoded
Form encodingapplication/x-www-form-urlencoded: spaces become +, not %20; + becomes %2B
Path segmentsOnly encode characters not allowed in a path; / is the segment separator and is not encoded
Fragment (#)Processed only by the browser — never sent to the server
Case%2F and %2f are equivalent; prefer uppercase hex

Common Encoded Values

CharacterUTF-8 BytesPercent-Encoded
Space0x20%20
€ (euro)0xE2 0x82 0xAC%E2%82%AC
© (copyright)0xC2 0xA9%C2%A9
→ (arrow)0xE2 0x86 0x92%E2%86%92
中 (CJK)0xE4 0xB8 0xAD%E4%B8%AD
Related guidesAll guides →