How to Use This Tool
Enter an allocation and choose how finely to split it. In almost every case the answer you want is /64, and the tool will say so.
The arithmetic is trivial
Each additional bit of prefix doubles the number of subnets, so going from /48 to /64 borrows 16 bits and produces 216 = 65,536 subnets. From /56 to /64 is 8 bits, so 256. There is no equivalent of the network and broadcast addresses to subtract, and no usable-host arithmetic, because you never run out of hosts.
A /64 contains 264 addresses — roughly 1.845 × 1019. That is 4.29 billion times the entire IPv4 address space, in one subnet, and it is the standard size for a single link whether it holds three devices or three thousand.
Do not subnet past /64
This is the one rule that catches people arriving from IPv4, where conserving addresses is a virtue.
Stateless address autoconfiguration — the mechanism by which a host generates its own address from the router advertisement — assumes exactly 64 interface identifier bits. Use a /112 or a /120 on a link and hosts cannot autoconfigure. The failure is not obvious: some devices fall back to DHCPv6, some do not, and the symptom looks like a server problem rather than a prefix-length problem.
The recognised exception is a point-to-point link between two routers you administer, where a /127 is explicitly recommended to avoid a particular neighbour-discovery attack. That is deliberate, documented, and nothing to do with saving space.
How to lay out the bits you have
With 16 subnet bits from a /48 there is no pressure to pack anything, so use the space to make the addresses readable:
- Give a nibble to each level. One hexadecimal digit is four bits and sixteen values. Assigning one digit to the site, one to the building and two to the VLAN makes a prefix self-documenting at a glance.
- Align to a nibble boundary — /52, /56, /60, /64. A /61 is legal and turns every prefix into a bit-counting exercise for whoever reads the routing table next.
- Match the VLAN number where you can. VLAN 30 in
2001:db8:abcd:30::/64removes an entire class of documentation error. - Leave gaps. Sparse allocation costs nothing and lets a site grow without renumbering.
What the notation is doing
Both forms shown here mean the same thing. Compressed notation drops leading zeros in each group and
replaces one run of all-zero groups with ::, which may appear only once in an address —
otherwise the expansion would be ambiguous.
Comparing addresses as text is therefore unreliable, because
2001:db8:0:0:0:0:0:1 and 2001:db8::1 are the same address written two ways.
Normalise before comparing, and prefer the compressed form in documentation since it is what everything
displays.
