Technical Guide

IPv6 Subnetting Tools: Calculate, Split and Plan IPv6 Prefixes

IPv6 subnetting is not difficult because the formulas are complicated. It is difficult because 128-bit addresses are easy to misread, hexadecimal boundaries are less familiar than decimal ones, and a small planning mistake can make an otherwise simple address plan awkward to summarize or delegate later.

The practical questions are usually straightforward: What does this prefix actually cover? How many /64s fit inside it? Where are the child-prefix boundaries? Do two allocations collide? Can a set of routes be aggregated exactly, or would a covering summary pull in extra space?

Those are calculation problems, but they are also design problems. In IPv6, the goal is rarely to squeeze hosts into the smallest possible subnet. Good plans favor hierarchy, clean delegation, predictable boundaries, and routes that summarize without surprises.

IPv6 subnetting tools infographic showing prefix planning, child-prefix splitting, overlap checking, range conversion, and route summarization.
IPv6 subnetting workflow: calculate prefix boundaries, split child prefixes, verify overlap, convert ranges, and summarize routes.

Choose the Right IPv6 Tool

Task IPRevealed tool Example input
Inspect one IPv6 prefix Subnet Calculator 2001:db8:1234:5600::/56
Divide a parent prefix into equal child prefixes Subnet Splitter /48 into /56 or /64 networks
Convert CIDR to a range, or a range to an exact CIDR set CIDR & IP Range Converter 2001:db8:1234:1:: to 2001:db8:1234:3:ffff:ffff:ffff:ffff
Check containment, duplicates, adjacency, or separation Subnet Overlap Checker 2001:db8:1234:4000::/52 vs. 2001:db8:1234:4a00::/56
Reduce routes exactly and compare them with a covering summary Route Summarization Calculator two adjacent /56 routes

IPRevealed’s VLSM Calculator is intentionally not in this IPv6 list. It is an IPv4 host-requirement planner, where usable-host arithmetic drives subnet sizing. IPv6 planning follows a different model.

IPv6 Subnetting Is Not IPv4 With Longer Addresses

IPv4 subnet design is often a packing exercise. If a segment needs 50 hosts, an engineer works out the smallest subnet that fits, protects network and broadcast addresses, and tries not to waste scarce space.

That instinct is mostly unhelpful in IPv6. An IPv6 address is 128 bits long. A /64 therefore contains 2^64 addresses. On a normal host LAN, the address count is so large that saving a few host bits has no operational value. The useful design question is not “How many hosts can I squeeze into this subnet?” It is “How should I organize the prefix space so that the network stays understandable?”

That changes the planning priorities. You care about where site boundaries sit, whether functions can be summarized, whether a delegated block is easy to recognize in a log, and whether the plan leaves room for another building or another region without renumbering everything around it.

There is also no useful IPv6 equivalent of an IPv4 /24. A /120 happens to contain 256 addresses, but that numerical coincidence does not make it a sensible replacement for an IPv4 /24. On ordinary SLAAC-capable LANs, /64 is the operational norm. Prefixes shorter than /64 are commonly used as delegation or aggregation blocks from which those LAN prefixes are drawn.

A few notation rules are worth keeping in your head:

  • IPv6 uses prefix lengths such as /48, /56, and /64, not dotted-decimal masks.
  • Each hexadecimal digit represents 4 bits.
  • Eight 16-bit groups make up the full 128-bit address.
  • Leading zeros inside a group may be omitted, and one run of zero groups can be compressed with ::.
  • IPv6 has no broadcast address. Multicast replaces the broadcast function used by IPv4.

RFC 5952 defines the recommended text form for IPv6 addresses: lowercase hexadecimal, no unnecessary leading zeros, and the longest eligible run of zero groups compressed.

Read a Prefix Before You Calculate It

Take this address:

2001:db8:1234:5600::/64

Expanded, it is:

2001:0db8:1234:5600:0000:0000:0000:0000/64

The /64 means that the first 64 bits identify the subnet. The remaining 64 bits vary inside that subnet. For any IPv6 prefix, the mathematical address count is:

2^(128 - prefix length)

That formula is exact, but huge decimal address counts are rarely the most useful planning unit. For subnet design, engineers often care more about how many /64 networks fit inside a larger allocation.

Prefix Bits after prefix Address count Number of /64s
/48 80 2^80 65,536
/52 76 2^76 4,096
/56 72 2^72 256
/60 68 2^68 16
/64 64 2^64 1
/127 1 2 not applicable
/128 0 1 not applicable

That table is more useful than writing out a 25-digit number for a /48. If a site receives a /56, knowing that it contains 256 /64 networks immediately tells you how much LAN-level space you have to work with.

Nibble Boundaries Make IPv6 Plans Easier to Operate

One hexadecimal digit is 4 bits, so prefix lengths that are multiples of four land cleanly on a hexadecimal digit. That is why /48, /52, /56, /60, and /64 are so comfortable to work with.

Start with:

2001:db8:1200::/48

The first three groups are fixed. The fourth group gives you 16 bits between the /48 site prefix and the /64 LAN boundary:

2001:db8:1200:SSSS::/64

Each extra nibble you fix consumes 4 more prefix bits.

At /52, the first hexadecimal digit in the fourth group is fixed. There are 16 such child prefixes:

2001:db8:1200::/52
2001:db8:1200:1000::/52
2001:db8:1200:2000::/52
...through...
2001:db8:1200:f000::/52

At /56, the first two hexadecimal digits are fixed, giving 256 child prefixes. At /64, all four digits are fixed, giving 65,536 LAN-sized prefixes.

This is not just cosmetic. Nibble alignment makes boundaries obvious during troubleshooting and makes conventional ip6.arpa reverse-DNS delegation cleaner because the reverse tree is built one hexadecimal nibble per label. A non-nibble prefix such as /50 is valid routing space, but its boundary cuts through a hexadecimal digit. Normal reverse delegation then has to be represented using multiple nibble-boundary zones or another arrangement instead of one clean delegation.

The operational difference is easy to feel. With 2001:db8:1200:4a00::/56, you can see at a glance that it sits inside 2001:db8:1200:4000::/52: the /52 fixes the leading 4, and the /56 fixes 4a.

Now compare that with 2001:db8:1200:4000::/50. The first two bits of the fourth group’s first hex digit are fixed and the remaining two bits vary. The prefix spans values from 4000 through 7fff. It is perfectly legal, but the boundary is no longer visible from the address text alone. That is an avoidable cognitive cost in a plan you may have to read under pressure.

Worked Example: Split a /48

Use 2001:db8:1234::/48 as the parent.

Between /48 and /64 there are 16 bits available for subnet structure.

/48 to /52

You borrow 4 bits:

2^(52 - 48) = 16

The resulting prefixes begin:

2001:db8:1234::/52
2001:db8:1234:1000::/52
2001:db8:1234:2000::/52

and end with:

2001:db8:1234:f000::/52

Each /52 still contains 4,096 /64 networks.

/48 to /56

You borrow 8 bits:

2^(56 - 48) = 256

The first few child prefixes are:

2001:db8:1234::/56
2001:db8:1234:100::/56
2001:db8:1234:200::/56

The last is:

2001:db8:1234:ff00::/56

The compressed form can look slightly odd at first. 0100 in the fourth group is normally written as 100, so 2001:db8:1234:0100::/56 and 2001:db8:1234:100::/56 represent the same prefix.

/48 to /64

You borrow all 16 bits:

2^(64 - 48) = 65,536

The sequence runs from:

2001:db8:1234::/64

through:

2001:db8:1234:ffff::/64
Split Borrowed bits Child prefixes /64s inside each child
/48 -> /52 4 16 4,096
/48 -> /56 8 256 256
/48 -> /60 12 4,096 16
/48 -> /64 16 65,536 1

A calculator is useful here because it removes typing and boundary mistakes. The arithmetic is still simple enough that you should be able to sanity-check the result without trusting the tool blindly.

A /56 Gives You 256 /64 Networks

A /56 is a common size to encounter in delegated IPv6 space, so it is worth being able to read one directly.

Take:

2001:db8:abcd:1200::/56

The first two digits of the fourth group, 12, are part of the prefix. The last two digits can vary from 00 through ff. That gives:

2^(64 - 56) = 256

possible /64 networks.

A few points in the sequence are enough to show the pattern:

Index /64 prefix
0 2001:db8:abcd:1200::/64
1 2001:db8:abcd:1201::/64
2 2001:db8:abcd:1202::/64
128 (0x80) 2001:db8:abcd:1280::/64
255 (0xff) 2001:db8:abcd:12ff::/64

The parent range begins at 2001:db8:abcd:1200:: and ends at 2001:db8:abcd:12ff:ffff:ffff:ffff:ffff.

One small trap is worth calling out: the subnet field is hexadecimal. 0x80 is decimal 128. If a spreadsheet or naming convention treats the visible hex digits as decimal numbers, the plan becomes confusing very quickly.

Why /64 Still Matters on Host LANs

The 64-bit boundary is deeply embedded in IPv6 addressing and autoconfiguration. RFC 4862 says that, for SLAAC, a received prefix is ignored when its length plus the link’s interface-identifier length does not total 128 bits. On Ethernet and other common IPv6 link types with 64-bit interface identifiers, that means a /64 prefix for normal SLAAC operation.

That is why an arbitrary /80 on an ordinary Ethernet LAN is not a clever way to “save addresses.” It changes the assumptions that hosts and IPv6 mechanisms expect, while providing no meaningful capacity benefit.

The practical rule is narrower than the slogan “IPv6 always uses /64”:

  • Ordinary host LANs: use /64 unless you have a documented reason and understand the consequences.
  • Inter-router point-to-point links: /127 is standardized for this use case.
  • Single-address routes and many loopback assignments: /128 is appropriate.
  • Prefixes shorter than /64: commonly serve as aggregate or delegated space from which LAN prefixes are carved.

IPv6 routing itself is classless. Other prefix lengths are valid in routing tables. The /64 rule is about how normal subnetting and address configuration are designed, not about what a routing protocol can carry.

/127 on Router-to-Router Links

Point-to-point links are a different case because there are only two interfaces and no need for SLAAC on a host LAN.

RFC 6164 requires routers to support /127 prefixes on inter-router point-to-point links and requires Subnet-Router anycast to be disabled for the /127 when used this way. The recommendation was motivated in part by operational problems seen with larger on-link prefixes, including neighbor-discovery exhaustion and the old “ping-pong” issue.

For example:

2001:db8:10:20::/127

contains exactly two addresses:

2001:db8:10:20::
2001:db8:10:20::1

Prefix boundaries still matter. A /127 starts on an even address. If you enter 2001:db8:10:20::1/127, a correct calculator normalizes the network to 2001:db8:10:20::/127.

There is an extra planning detail when many /127 links are numbered from one shared /64. RFC 6164 cautions against assigning certain addresses that have special anycast meaning, including the all-zero interface identifier and the reserved subnet-anycast identifiers defined by RFC 2526. Some operators avoid the issue entirely by reserving a larger, easy-to-document block for point-to-point links and allocating /127s from a safe part of it. The important part is to document the convention rather than copying an IPv4 /30 habit into IPv6.

Build the Hierarchy Before You Fill the Addresses

A calculator can tell you that a prefix is valid. It cannot tell you whether your plan will still make sense after three acquisitions, four new branches, and a second data center.

Suppose the organization owns this documentation prefix for an example design:

2001:db8:1200::/48

One workable strategy is to use the fourth group as a structured field instead of allocating /64s sequentially from zero.

For example:

Block Prefix Role
Infrastructure 2001:db8:1200::/52 loopbacks and link addressing
HQ 2001:db8:1200:1000::/52 campus functions
Data center 2001:db8:1200:2000::/52 server and service networks
Reserved growth 2001:db8:1200:3000::/50 future sites or regions
Branch pool 2001:db8:1200:8000::/49 up to 128 branch /56s
Management 2001:db8:1200:f000::/52 device and out-of-band management

Inside the HQ block, /56s can represent functions. Inside a branch /56, /60s can separate functions and still leave 16 /64 LANs per function if that suits the design.

The exact hierarchy is not sacred. The important part is that it is intentional.

A good plan pays off in places that are easy to underestimate during design meetings. Route policy gets shorter. ACLs are easier to review. A prefix seen in NetFlow, a firewall log, or an incident ticket tells you something about where it belongs. Reverse DNS delegation is cleaner. New subnets fit into reserved space instead of forcing a renumber.

Sequential allocation is tempting because it looks tidy on day one. It often becomes expensive later because address proximity and organizational hierarchy are not the same thing. Leave gaps on purpose. IPv6 gives you enough space to do that.

What a Useful IPv6 Subnet Calculator Should Show

For a single prefix, you want more than a normalized CIDR string. At minimum, you need the network boundary, first and last address, address count, and enough prefix context to verify what the calculator did.

The IPRevealed Subnet Calculator accepts IPv4 and IPv6 and runs the arithmetic locally in the browser. For IPv6 it exposes the address space, prefix anatomy, prefix equivalents, network boundaries, nearby prefixes, neighboring subnets, expanded range details, host/interface bits, classification, and the number of contained /64 networks where that measure applies.

Try 2001:db8:1234:5600::/56. The normalized prefix is the same value, and the range should end at:

2001:db8:1234:56ff:ffff:ffff:ffff:ffff

That is 2^72 addresses, containing 256 /64 networks.

The phrase “usable hosts” needs special care in IPv6. Do not import the IPv4 formula of total addresses minus two. IPv6 has no broadcast address, and prefixes are not sized around host counts in the same way. The first and last values of an IPv6 range are useful as mathematical boundaries; they are not an IPv4-style network-and-broadcast pair.

There are still reserved or special-purpose addresses in some contexts. The Subnet-Router anycast address, for example, uses the all-zero interface identifier for a subnet under RFC 4291. That is a protocol rule, not a reason to invent a generic “minus two” host-capacity formula.

Splitting an IPv6 Prefix

The child-prefix count is deterministic:

child prefixes = 2^(child length - parent length)

For a /48 split into /56s:

2^(56 - 48) = 256

For a /56 split into /64s:

2^(64 - 56) = 256

If you need 40 administrative blocks inside a /48, six borrowed bits would technically be enough because 2^6 = 64, producing /54s. Whether /54 is a good design choice is a separate question. In many operational plans, moving to the next nibble boundary at /56 is easier to document and delegate, and the extra address space is not a scarce resource.

The Subnet Splitter is the right tool when the requirement is an equal partition. It supports IPv4 and IPv6 and can enumerate the child CIDRs without forcing you to hand-build hexadecimal sequences.

For very large results, do not treat a 65,536-row dump as useful output. You normally need the count, the boundary pattern, selected examples, and a way to navigate to a particular subnet.

CIDR and Explicit Ranges Are Not Interchangeable in Every Case

CIDR-to-range is simple: one prefix always maps to one contiguous range.

2001:db8:abcd:1200::/56

covers:

2001:db8:abcd:1200::

to:

2001:db8:abcd:12ff:ffff:ffff:ffff:ffff

Range-to-CIDR is more interesting. An arbitrary range can require several exact CIDR blocks. A single covering prefix is not the same thing because it may include addresses that were never in the original range.

For example:

2001:db8:1234:1::

to

2001:db8:1234:3:ffff:ffff:ffff:ffff

is represented exactly by:

2001:db8:1234:1::/64

plus

2001:db8:1234:2::/63

Another range, 2001:db8::10 through 2001:db8::2f, contains 32 addresses but is not aligned as one 32-address CIDR. Its exact representation is two /124s:

2001:db8::10/124
2001:db8::20/124

The CIDR & IP Range Converter handles both directions and can also merge exact, aligned CIDR siblings without expanding coverage.

Overlap: CIDR Prefixes Either Nest or They Do Not

Two proper CIDR prefixes cannot partially overlap the way arbitrary address ranges can. Because CIDRs are aligned power-of-two blocks, their relationship is one of four practical cases:

  1. identical;
  2. one prefix contains the other;
  3. adjacent but non-overlapping;
  4. disjoint with a gap.

Consider:

2001:db8:1234:4000::/52

and

2001:db8:1234:4a00::/56

The /56 is fully contained by the /52. If the first block is being reserved for a new site while the second is already in use, the problem is not theoretical: you have allocated the same address space twice.

Adjacency is different. These two /52s are adjacent and aligned siblings:

2001:db8:1234:4000::/52
2001:db8:1234:5000::/52

They combine exactly into:

2001:db8:1234:4000::/51

But adjacency alone is not enough. 5000::/52 and 6000::/52 sit next to each other, yet they are not aligned as the two children of one /51, so they do not collapse into a single exact /51.

The Subnet Overlap Checker is useful before an allocation reaches routing or IPAM, when a containment error is still cheap to fix.

Route Summarization: Exact and Covering Are Different Answers

Network teams often use the word “summary” for two different calculations.

An exact aggregation represents the supplied address space and nothing else. If two aligned /56 siblings are present:

2001:db8:1234::/56
2001:db8:1234:100::/56

they aggregate exactly to:

2001:db8:1234::/55

Now use three /56s:

2001:db8:1234:100::/56
2001:db8:1234:200::/56
2001:db8:1234:300::/56

The exact result is still two routes:

2001:db8:1234:100::/56
2001:db8:1234:200::/55

The smallest single prefix that covers all three is 2001:db8:1234::/54. That covering prefix also contains 2001:db8:1234::/56, which was not part of the input.

That distinction matters in routing. A covering aggregate may attract traffic for address space that is unused or reachable somewhere else. A mathematically neat summary is not automatically a safe route advertisement. Next hops, policy, failure behavior, and discard routing still have to make sense.

The Route Summarization Calculator deliberately shows both views: the smallest exact set and the smallest one-route covering supernet, including the extra address space introduced by the latter.

Mistakes That Cause Real IPv6 Planning Problems

  • Packing prefixes as if addresses were scarce. Small host subnets do not buy you anything on a normal IPv6 LAN. They usually buy you exceptions.
  • Using a non-/64 host LAN without a reason. Routing may work, but SLAAC and other assumptions tied to the 64-bit boundary can stop working as expected.
  • Ignoring nibble boundaries. /50 and /54 are valid, but they are harder to read and less convenient for conventional reverse-DNS delegation than /52 and /56.
  • Allocating first and inventing hierarchy later. Once unrelated sites are interleaved across an aggregate, route summarization becomes a renumbering problem rather than a planning choice.
  • Subtracting two addresses. That is IPv4 muscle memory. IPv6 has no broadcast address, and there is no generic “usable = total – 2” rule.
  • Treating the final address as broadcast. It is not. IPv6 uses multicast instead of broadcast.
  • Assuming one universal customer prefix size. End-site assignment is a policy and operational decision. RFC 6177 explicitly moved away from a one-size-fits-all /48 recommendation while still emphasizing that end sites should receive enough space for multiple subnets and long-term growth.
  • Using /126 on point-to-point links because /30 felt familiar. IPv6 does not have the IPv4 network/broadcast reason that drove /30; RFC 6164 specifically addresses /127 inter-router links.
  • Calling ULA “IPv6 RFC1918.” Unique Local Addresses are not globally routed, but their structure and intended use are not simply a copy of private IPv4 plus NAT. Locally assigned ULAs use fd00::/8 with a pseudo-random 40-bit Global ID, producing a /48 site prefix under RFC 4193.
  • Skipping containment checks. A duplicate or contained allocation can sit unnoticed until a more-specific route changes traffic behavior. Checking the plan takes seconds; diagnosing it later can take much longer.

Frequently Asked Questions

What does an IPv6 subnet calculator calculate?

It normalizes an IPv6 address and prefix, shows the prefix boundaries and size, and helps you verify where the address sits inside that prefix. A more complete tool also exposes neighboring prefixes, parent/child relationships, and /64 counts for larger allocations.

How many /64 networks are in a /48?

65,536. The difference is 16 bits, so the count is 2^(64 – 48) = 2^16.

How many /64 networks are in a /56?

There are 256 /64 networks. The difference is 8 bits, so 2^(64 – 56) = 2^8 = 256.

Should every IPv6 LAN use /64?

For ordinary host LANs using the normal IPv6 addressing model and SLAAC, /64 is the standard operational choice. Point-to-point router links are a notable exception and commonly use /127; a single host route or loopback may use /128.

What is a nibble boundary?

A nibble is 4 bits, the size of one hexadecimal digit. Prefixes such as /48, /52, /56, /60, and /64 end exactly on a hexadecimal digit, which makes them easier to read and simpler to work with in conventional IPv6 reverse DNS.

Does IPv6 use subnet masks?

IPv6 uses CIDR prefix lengths such as /48 and /64. Dotted-decimal masks such as 255.255.255.0 are an IPv4 notation and are not used for IPv6.

Can two IPv6 CIDRs partially overlap?

Not if both are valid aligned CIDR prefixes. They can be identical, one can contain the other, they can be adjacent, or they can be separate. Partial overlap is possible with arbitrary address ranges, not with proper CIDR blocks.

When should /127 be used?

RFC 6164 specifies /127 support for inter-router point-to-point links. It is an infrastructure-link design choice, not a replacement for /64 on ordinary host LANs.

Is /128 an IPv6 subnet?

A /128 contains one address. It is commonly used to represent a single address in routing or for loopback-style assignments, rather than a multi-host LAN.

References

  • RFC 2526 – Reserved IPv6 Subnet Anycast Addresses
  • RFC 3596 – DNS Extensions to Support IP Version 6
  • RFC 3849 – IPv6 Address Prefix Reserved for Documentation
  • RFC 4193 – Unique Local IPv6 Unicast Addresses
  • RFC 4291 – IP Version 6 Addressing Architecture
  • RFC 4862 – IPv6 Stateless Address Autoconfiguration
  • RFC 5952 – A Recommendation for IPv6 Address Text Representation
  • RFC 6164 – Using 127-Bit IPv6 Prefixes on Inter-Router Links
  • RFC 6177 – IPv6 Address Assignment to End Sites
  • RFC 7421 – Analysis of the 64-bit Boundary in IPv6 Addressing
  • RFC 8200 – Internet Protocol, Version 6 (IPv6) Specification

Technical examples use the documentation prefix 2001:db8::/32. Verify production address plans against your own allocation, routing policy, and platform requirements.