Visual RFC.
ALL RFCs / RFC 3986
Read the RFC ↗
RFC 3986 / ENCODING

Escape data, preserve delimiters

02

Percent encoding represents an octet with a percent sign and two hexadecimal digits.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

DIAGRAM§ 2.1 ↗
RFC 3986 · § 2.1EXAMPLE
4 / 4
Escape data, preserve delimitersSide-by-side path sketches contrast a separator with encoded data, then distinguish normalization from double decoding.A slash can be structure or data/a/b/a%2Fbtwo path segmentsone path segmentaba / bescaped slash is data%7E ⇄ ~unreserved character: safe normalization%252F → %2Fdecode once; do not reinterpret it again
04
Avoid changing meaning twice.

%252F decodes once to %2F, not directly to a delimiter.

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
KEY POINT

An encoded delimiter can mean something different from the delimiter itself.

  • Unreserved characters are letters, digits, hyphen, period, underscore, and tilde.
  • A reserved character used as data must be percent-encoded when it would conflict with a delimiter.
  • Do not encode or decode the same string more than once.
DETAILS

The examples simplify the wire representation. Follow the linked specification and application profile for implementation.

Read the RFC section ↗

Diagrams simplify the RFC. Read the linked sections for complete requirements.

Privacy
All chapters in this RFC
  1. The five URI components
  2. Escape data, preserve delimiters
  3. Resolve a relative reference
  4. Authority has its own structure
  5. Normalize only what is safe
  6. An identifier can mislead
RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗