URL Encoder / Decoder3 min readOct 21, 2026

RFC 3986 Reserved vs Unreserved Characters: The Definitive URI Cheatsheet

Master the IETF RFC 3986 URI specification. Learn the difference between unreserved characters, gen-delims, sub-delims, and percent-encoding rules.

Direct Summary (TL;DR)

IETF RFC 3986 categorizes all characters in a URI into Unreserved characters (A-Z, a-z, 0-9, '-', '_', '.', '~', which never require encoding), Reserved Gen-Delims (:, /, ?, #, [, ], @), and Reserved Sub-Delims (!, $, &, ', (, ), *, +, ,, ;, =). Any character outside the unreserved set must be percent-encoded when used for non-structural data.

Interactive Mickytool Utility

Solve this problem now with our free URL Encoder / Decoder

Try it instantly in your browser โ€” zero tracking, 100% client-side privacy.

Open URL Encoder / Decoder

Specification & Architecture Reference

RFC 3986 Reserved vs Unreserved Characters: The Definitive URI Cheatsheet โ€” Technical Summary
RFC 3986 CategoryCharacter SetEncoding Requirement in Data Payloads
Unreserved CharactersA-Z a-z 0-9 - _ . ~Never encoded (Must NOT be percent-encoded)
General Delimiters (gen-delims): / ? # [ ] @Must be percent-encoded when appearing inside parameter values
Sub-delimiters (sub-delims)! $ & ' ( ) * + , ; =Must be percent-encoded if used as literal parameter content
Non-ASCII / UTF-8Accented letters, Emojis, SymbolsEncoded into UTF-8 octets, then percent-encoded (%F0%9F...)

The Architecture of RFC 3986

The **IETF RFC 3986 Uniform Resource Identifier (URI)** specification governs how every link, route, and query string across the web must be constructed.

The specification divides characters into two functional categories:

1. Unreserved Characters (Never Encoded) These characters have no syntactic or structural role in a URI. RFC 3986 explicitly dictates that unreserved characters **must not** be percent-encoded: ```text ALPHA / DIGIT / "-" / "." / "_" / "~" ``` For example, encoding the tilde `~` as `%7E` is technically redundant according to RFC 3986 ยง2.3.

2. Reserved Characters (Delimiters) Reserved characters serve as structural separators in the URI syntax: - **General Delimiters (gen-delims):** `: / ? # [ ] @` define the major structural boundaries (scheme, host, path, query, fragment). - **Sub-delimiters (sub-delims):** `! $ & ' ( ) * + , ; =` define intra-component boundaries, such as separating keys from values (`key=value`) and chaining items (`&item=2`).

When you want to include a reserved character as literal data content inside a path or query parameter, it **must** be percent-encoded so the parser does not treat it as a structural delimiter.

The Canonical Percent-Encoding Table - `:` $\rightarrow$ `%3A` - `/` $\rightarrow$ `%2F` - `?` $\rightarrow$ `%3F` - `#` $\rightarrow$ `%23` - `&` $\rightarrow$ `%26` - `=` $\rightarrow$ `%3D` - `+` $\rightarrow$ `%2B`

Verify and format RFC 3986 URLs directly in your browser with Mickytool's **URL Encoder / Decoder**.

Interactive Mickytool Utility

Solve this problem now with our free URL Encoder / Decoder

Execute this workflow immediately without saving data on remote servers.

Open URL Encoder / Decoder

Frequently Asked Questions

Why is the tilde (~) often encoded as %7E by older libraries?

The earlier RFC 2396 specification classified the tilde as a reserved character. RFC 3986 updated the tilde to the unreserved category in 2005.

Can emojis be placed directly in a URL?

Raw Unicode characters cannot appear in valid URIs. Emojis must be converted to their UTF-8 byte sequences and percent-encoded (e.g. ๐Ÿš€ becomes %F0%9F%9A%80).

Related Engineering Guides