An IPv6 address like fe80::1a2b:3c4d:5e6f:7g8h looks dense at first glance, but it breaks down into a small number of consistent rules once you know what to look for.

Hextets

An IPv6 address is eight groups of four hexadecimal digits, called hextets, separated by colons. Each hextet represents 16 bits, for a total 128-bit address (compared to IPv4's 32 bits).

Zero compression

Consecutive hextets that are entirely zero can be compressed to a double colon (::), used at most once per address to avoid ambiguity. So 2001:0db8:0000:0000:0000:0000:0000:0001 becomes 2001:db8::1 — much more readable, and functionally identical.

Prefixes

Like IPv4's CIDR notation, IPv6 addresses are often written with a prefix length, like 2001:db8::/32, indicating how many leading bits define the network portion of the address versus the host-specific portion.

Interface identifiers

The latter portion of an IPv6 address (often the last 64 bits) typically identifies the specific device interface, sometimes derived from hardware identifiers or, for privacy, randomly generated and periodically rotated — see IPv6 Privacy Addresses.

Link-local addresses and scope

Addresses starting with fe80:: are link-local — only valid on the immediate local network segment, never routed onto the broader internet. This is different from a private IPv4 address; it's a distinct category with its own specific, narrower scope.

FAQ

Why do IPv6 addresses sometimes have brackets around them in URLs?

Because IPv6 addresses already use colons, brackets (like [2001:db8::1]) distinguish the address from a port-number separator when both appear together in a URL.