IPv6 Subnetting Explained: Full CIDR Prefix & Usable Range Reference
If you learned IPv6 subnetting by carrying over IPv4 habits, a few things break immediately. There's no broadcast address, no "network address" burned out of every subnet, and the numbers involved are so large that thinking in individual host counts stops being useful past a certain point. This post is a practical IPv6 subnetting reference: what each CIDR prefix actually gives you, how to read the ranges, and a full table you can bookmark.
IPv6 subnetting vs. IPv4: the one big difference
In IPv4, every subnet loses two addresses — the network address and the broadcast address — leaving you with 2^n - 2 usable hosts.
IPv6 doesn't work that way. There's no broadcast in IPv6 (multicast replaces it entirely), so there's no broadcast address to burn. The only reserved address in a subnet is the Subnet-Router anycast address — the all-zeros host address, reserved per RFC 4291 for routers on that link. In practice, this means:
- A
/64subnet gives you effectively the entire2^64address block usable — the "loss" of one anycast address out of 18 quintillion doesn't meaningfully change anything. - You will never run out of host addresses in a properly sized IPv6 subnet. This isn't marketing — it's just the math.
So instead of asking "how many usable hosts," the more useful IPv6 questions are:
- How many subnets does a given allocation give me?
- What's the first and last address in a given block?
Why /64 is the standard subnet size
Almost every IPv6 subnet you'll assign to an actual network segment is a /64. This isn't arbitrary — SLAAC (Stateless Address Autoconfiguration) and most IPv6 addressing schemes assume a 64-bit interface identifier. Go smaller than /64 on a LAN segment and you risk breaking autoconfiguration for connected devices.
Because of this, most IPv6 planning is really about how many /64s you get, not raw host counts:
| Allocation | Number of /64 subnets |
|---|---|
| /48 | 65,536 |
| /52 | 4,096 |
| /56 | 256 |
| /60 | 16 |
| /64 | 1 (this is the subnet) |
If your ISP or hosting provider gives you a /56, that's 256 separate /64 subnets to hand out to VLANs, sites, or services — plenty for almost any home or small business setup. A /48 (common for larger organizations) gives you 65,536 of them.
Reading an IPv6 address and prefix

An IPv6 address is 128 bits, written as eight groups of four hex digits, separated by colons:
2001:0db8:0000:0000:0000:0000:0000:0001
Leading zeros in each group can be dropped, and one run of consecutive all-zero groups can be collapsed to :: (only once per address):
2001:db8::1
The CIDR prefix (/64, /48, etc.) tells you how many of the leftmost bits are fixed — the "network" portion — leaving the rest as host/subnet space. Since each hex digit represents exactly 4 bits, prefixes that land on a multiple of 4 align neatly with hex digit boundaries, which is why IPv6 subnetting almost always happens at nibble (4-bit) boundaries rather than arbitrary bit counts.
Anatomy of an address
Here's how a typical /64 allocation breaks down in practice — the portion your ISP or registry assigned you, versus the portion left for host addressing:
The first 48 bits (three hex groups) are your global routing prefix — assigned to you by an ISP or RIR and not something you subnet further. The next 16 bits are your subnet ID — this is the part you actually divide up when carving a /48 into individual /64 subnets, as in the worked example below. Everything past the /64 boundary is the interface identifier — the host-addressing space, typically filled in automatically via SLAAC rather than assigned by hand.
Full reference table (every nibble-aligned prefix, /0 to /128)
Using 2001:db8::/32 as our example base (the reserved documentation prefix), here's the address space at every 4-bit step:
| Prefix | Host bits | Total addresses | Practical meaning |
|---|---|---|---|
| /0 | 128 | 2^128 | Entire IPv6 address space |
| /4 | 124 | 2^124 | A single Regional Internet Registry allocation block |
| /8 | 120 | 2^120 | |
| /12 | 116 | 2^116 | |
| /16 | 112 | 2^112 | |
| /20 | 108 | 2^108 | |
| /24 | 104 | 2^104 | |
| /28 | 100 | 2^100 | |
| /32 | 96 | 2^96 | Typical allocation to a large ISP |
| /36 | 92 | 2^92 | |
| /40 | 88 | 2^88 | |
| /44 | 84 | 2^84 | |
| /48 | 80 | 2^80 | Typical allocation to a single organization/site |
| /52 | 76 | 2^76 | Sometimes used for large multi-site orgs |
| /56 | 72 | 2^72 | Typical allocation to a home/small business |
| /60 | 68 | 2^68 | Smaller residential allocation |
| /64 | 64 | 2^64 (~18.4 quintillion) | Standard single subnet — one per VLAN/LAN segment |
| /68 | 60 | 2^60 | Sub-/64 — breaks SLAAC, avoid on host networks |
| /72 | 56 | 2^56 | |
| /76 | 52 | 2^52 | |
| /80 | 48 | 2^48 | |
| /84 | 44 | 2^44 | |
| /88 | 40 | 2^40 | |
| /92 | 36 | 2^36 | |
| /96 | 32 | 4,294,967,296 | Same size as the entire IPv4 address space |
| /100 | 28 | 268,435,456 | |
| /104 | 24 | 16,777,216 | |
| /108 | 20 | 1,048,576 | |
| /112 | 16 | 65,536 | |
| /116 | 12 | 4,096 | |
| /120 | 8 | 256 | Small point group, rarely used on its own |
| /124 | 4 | 16 | |
| /127 | 1 | 2 | Point-to-point router links (RFC 6164) |
| /128 | 0 | 1 | A single host — used for loopbacks, DNS servers |
The bolded rows are the ones you'll actually use day to day. Everything else exists mostly at the allocation/registry level, above what you'd configure directly on a router.
Worked example: subnetting a /48 down to /64s
Say your ISP or hosting provider hands you 2001:db8:1234::/48. That's 16 hex digits fixed (2001:0db8:1234), leaving 5 groups (80 bits) free.
To carve out individual /64 subnets, you just vary the 4th group:
2001:db8:1234:0000::/64 → subnet 0
2001:db8:1234:0001::/64 → subnet 1
2001:db8:1234:0002::/64 → subnet 2
...
2001:db8:1234:ffff::/64 → subnet 65,535
Each of those /64s is then a complete subnet on its own, with the remaining 64 bits available for host addressing via SLAAC or DHCPv6.
First and last address in a /64
For any /64, the first address is the network prefix itself, and the last address is the prefix with all host bits set to 1:
2001:db8:1234:0001::/64
First address: 2001:db8:1234:0001::
Last address: 2001:db8:1234:0001:ffff:ffff:ffff:ffff
The Subnet-Router anycast address is that first address (2001:db8:1234:0001::) — reserved for routers on the link, not typically assigned to a host, but not "lost" from the usable pool the way IPv4's broadcast address is.
The oddball: /127 for point-to-point links
Historically, IPv6 best practice discouraged /127s on point-to-point links (router-to-router) because it created an address that collided with the Subnet-Router anycast convention. RFC 6164 formally reversed this guidance — /127 is now the recommended size for point-to-point links, similar to how /30 (or /31, per RFC 3021) is used in IPv4. It gives you exactly two usable addresses, one for each end of the link, with no wasted space.
Quick recap
- No broadcast address in IPv6 — the only reserved address per subnet is the Subnet-Router anycast (all-zeros host portion).
- /64 is the standard subnet size — required for SLAAC to work correctly.
- Think in terms of how many /64s an allocation gives you, not raw host counts.
- /127 for router-to-router links, /128 for single hosts (loopbacks, DNS servers).
- Prefixes are almost always chosen on 4-bit (nibble) boundaries since each hex digit is exactly 4 bits.
Save the table above — it covers every prefix you're likely to encounter, from RIR-level allocations down to individual host routes.