Skip to main content

IPv6 Calculator

Expand or compress an IPv6 address to RFC 5952 form, work out prefixes and subnet counts, build EUI-64 identifiers and reverse DNS names.

A prefix is optional. Brackets, a port and a %zone suffix are all accepted.


This address

Compressed
—
Expanded
—
Type
—
Reverse DNS name
—

This tool runs entirely in your browser. Nothing you enter is sent to our servers, so there is nothing for us to store or see.

This tool reads public records — DNS, WHOIS and certificate data that registries and servers publish openly. It sends nothing to the host you enter and changes nothing there. Use it on infrastructure you own or are authorised to look into.

About the IPv6 Calculator

Expand an IPv6 address to its full 32-digit form, compress it to the canonical short form, and work out what a prefix contains. Paste an address with or without a prefix, with a zone index, in brackets with a port, or with an embedded IPv4 tail — all of them are accepted and normalised.

Compression follows RFC 5952 exactly, which matters more than it sounds. The rules are: lowercase hex, no leading zeros inside a group, :: replaces the longest run of zero groups, the first such run wins a tie, and a run of only one group is never replaced. Implementations that get these wrong produce addresses that work perfectly but do not compare equal as strings — which silently breaks allow-lists, log correlation and deduplication in ways that are very hard to trace.

Prefix arithmetic is done with arbitrary-precision integers, so the address counts are exact. A /64 holds 18,446,744,073,709,551,616 addresses; a floating-point calculator rounds that and gives you something ending in a run of zeros. The more useful planning number is also shown: how many /64 subnets a prefix contains, since /64 is the standard subnet size.

There is also an EUI-64 builder, which turns a MAC address into the interface identifier that stateless autoconfiguration derives from it — including the universal/local bit inversion that everyone forgets — and the reverse ip6.arpa name, which is thirty-two reversed nibbles and thoroughly unpleasant to write out by hand.

How to use the IPv6 Calculator

  1. Paste an address

    Any form: compressed, expanded, bracketed with a port, with a %zone suffix, or with an embedded IPv4 tail such as ::ffff:192.0.2.1.

  2. Add a prefix for subnet details

    Append /64 or any other length to see the network address, the last address, the exact address count and how many /64 subnets it holds.

  3. Read the type

    Global unicast, link-local, unique local, multicast, documentation or loopback — with the reserved prefix it comes from.

  4. Build an EUI-64 identifier

    Enter a MAC address to get the interface identifier and the link-local address that stateless autoconfiguration would derive from it.

Frequently asked questions

What are the rules for compressing an IPv6 address?

RFC 5952 requires lowercase hexadecimal, no leading zeros within a group, and :: replacing the longest run of consecutive zero groups. If two runs are the same length the first one is replaced, and a run of only one zero group is never replaced. Following these exactly means the same address always produces the same string.

Why does a single zero group not get replaced by ::?

Because it would save nothing and create two valid spellings of the same address. 2001:db8:0:1:1:1:1:1 and 2001:db8::1:1:1:1:1 are the same address, and allowing both makes string comparison unreliable. RFC 5952 forbids the second form for exactly that reason.

Why is /64 the standard subnet size?

Because stateless address autoconfiguration derives the bottom 64 bits from the interface identifier, so it needs 64 host bits to work. That is why an ISP hands out a /56 or /48 rather than something tight — a /48 gives 65,536 subnets, each of which is a /64.

What is EUI-64 and why is a bit flipped?

It is how a 48-bit MAC address becomes a 64-bit interface identifier: ff:fe is inserted in the middle, and the universal/local bit — the second-lowest bit of the first byte — is inverted. The inversion exists so that locally administered identifiers sort differently from globally unique ones. It is the step people forget, and it turns 00:1a:2b into 02:1a:2b.

Is anything sent to a server?

No. Every calculation runs in your browser, so nothing about your addressing plan leaves your device.