URL Encoding Cheatsheet
A quick reference for percent-encoding rules, reserved vs unreserved characters, query string encoding, and common encoded values.
Try the URL Encoder / DecoderSections
Unreserved Characters (never encoded)
| Set | Characters |
|---|---|
Uppercase letters | A 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 letters | a 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 |
Digits | 0 1 2 3 4 5 6 7 8 9 |
Safe symbols | - _ . ~ |
Reserved Characters (encoded in query/fragment)
| Character | Encoded | Purpose |
|---|---|---|
Space | %20 (or + in form data) | Word separator |
! | %21 | General delimiter |
# | %23 | Fragment delimiter |
$ | %24 | Sub-delimiter |
& | %26 | Query parameter separator |
' | %27 | Sub-delimiter |
( | %28 | Sub-delimiter |
) | %29 | Sub-delimiter |
* | %2A | Sub-delimiter |
+ | %2B | Encoded plus (space in form data) |
, | %2C | Sub-delimiter |
/ | %2F | Path segment delimiter |
: | %3A | Scheme/port delimiter |
; | %3B | Sub-delimiter |
= | %3D | Key=value separator |
? | %3F | Query string start |
@ | %40 | Authority delimiter |
[ | %5B | IPv6 address delimiter |
] | %5D | IPv6 address delimiter |
Encoding Rules
| Rule | Detail |
|---|---|
Percent-encode | Replace byte with % followed by two uppercase hex digits — e.g. space → %20 |
UTF-8 first | Multi-byte characters are encoded as their UTF-8 byte sequence, each byte percent-encoded |
Form encoding | application/x-www-form-urlencoded: spaces become +, not %20; + becomes %2B |
Path segments | Only 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
| Character | UTF-8 Bytes | Percent-Encoded |
|---|---|---|
Space | 0x20 | %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 |