IPv6 addresses look intimidating until you have seen enough real ones to recognize the patterns. The first hextet usually tells you everything: what kind of address it is and what it is for. This post is a worked reference - one concrete example of every IPv6 address type you will actually encounter, with the address broken down field by field, so the patterns stick.
For the cluster overview, see the IPv6 complete guide.
The format, briefly
An IPv6 address is 128 bits, written as eight groups of four hex digits (hextets) separated by colons. Two compression rules make them shorter:
- Drop leading zeros in any hextet:
0db8becomesdb8,0000becomes0. - Replace one run of all-zero hextets with
::- but only once per address, otherwise it would be ambiguous.
So 2001:0db8:0000:0000:0000:0000:0000:0001 compresses to 2001:db8::1. Every example below is shown compressed.
Global unicast - the public, routable address
A global unicast address (GUA) is the IPv6 equivalent of a public IPv4 address: globally unique, internet-routable. Current GUAs are assigned out of 2000::/3, which in practice means an address starting with 2 or 3.
Worked example: 2001:db8:acad:10::5
The almost-universal split is a /64 for every subnet: 64 bits of network, 64 bits of interface ID. Note 2001:db8::/32 is the documentation range (reserved for examples like this one), so you will see it constantly in guides and never in the wild.
Link-local - exists on every interface, never routed
Every IPv6-enabled interface automatically has a link-local address. It is valid only on its own link, is never routed off that link, and is what neighbor discovery and routing-protocol hellos use. Link-local addresses come from fe80::/10, so they start with fe80.
Worked example: fe80::1ff:fe23:4567:890a
The fe80 prefix is the giveaway. The interface ID is often EUI-64 derived (you can spot the tell-tale fffe inserted in the middle) or randomized. Because link-local addresses are not unique beyond the link, you often must specify which interface you mean - ping fe80::1%GigabitEthernet0/0.
Unique local - private addressing
Unique local addresses (ULAs) are the IPv6 counterpart to RFC 1918 private IPv4 space. They are routable inside an organization but not on the global internet. ULAs come from fc00::/7, and in practice you see fd00::/8 because the locally-assigned bit is set.
Worked example: fd12:3456:789a:1::20
Multicast - one-to-many
IPv6 has no broadcast. Its job is done by multicast, and every multicast address starts with ff00::/8 - the leading ff is the marker. The character after ff encodes flags and scope (1 = node, 2 = link, 5 = site).
The solicited-node multicast address is worth knowing: a host joins the group ff02::1:ff plus the last 24 bits of its unicast address, so neighbor discovery can target it without flooding the whole link the way ARP does.
The two special single addresses
Both are mostly zeros, which is why they compress so dramatically. ::1 is 127 zero bits and a one; :: is all 128 bits zero.
A compression worked example
Compression trips people up most, so one full example end to end. Take the address 2001:0db8:0000:0000:0000:00a3:0000:8a2e.
- Drop leading zeros in each hextet:
2001:db8:0:0:0:a3:0:8a2e. - Collapse the longest run of zero hextets with
::. The longest run is the three zeros in the middle, so:2001:db8::a3:0:8a2e.
Note what you cannot do: the single 0 hextet after a3 stays as 0, because :: has already been used and an address may contain it only once. If two zero runs are equal length, collapse the first. Getting this right matters because 2001:db8::a3:0:8a2e and the fully-expanded form are the same address - tools accept both, and you will see both in the wild.
Anycast, briefly
One type that has no special prefix: anycast. An anycast address is an ordinary unicast address (usually a global unicast) deliberately assigned to more than one device. A packet sent to it is delivered to the nearest instance by routing metric. There is no flag in the address that marks it as anycast - it looks like any other unicast address, and only the configuration on multiple devices makes it anycast. It is used for things like distributing a DNS resolver across many sites behind one address.
Reading the first hextet at a glance
Common gotchas
Key takeaways
Every IPv6 address type has a recognizable opening. Global unicast starts with 2 or 3 and is the public, routable address, split as routing prefix, subnet ID, and a /64 interface ID. Link-local starts with fe80, exists automatically on every interface, and never leaves its link. Unique local starts with fd and is private addressing. Multicast starts with ff and replaces broadcast, with ff02::1 and ff02::2 as the everyday all-nodes and all-routers groups. ::1 is loopback and :: is unspecified. Learn to read the first hextet and an IPv6 address tells you what it is before you read the rest.
For the IPv6 cluster, see the IPv6 pillar.