IPv6 Toolkit

Compress and expand IPv6 addresses, build their ip6.arpa reverse-DNS name, read them as a 128-bit integer, work out any CIDR block, and generate Global Unicast, Unique Local and Link-Local addresses. Everything runs in your browser — nothing is sent to us.

Compress & Expand

Type any IPv6 address — we normalise it both ways as you type.

Reverse DNS & Integer

The same address as an ip6.arpa PTR name and a 128-bit number.

Enter a valid address in the Compress & Expand box above to populate these values.

CIDR Calculator

Enter a prefix like 2001:db8::/48 to size and bound the block.

Address Generator

Cryptographically random sample addresses for labs, docs and testing.

Global Unicast comes from 2000::/3, Unique Local from fd00::/8 (random global ID), Link-Local from fe80::/10. These are random examples — never route a generated address on a network you do not control.

Understanding IPv6 addresses

An IPv6 address is a 128-bit number, written as eight groups of four hexadecimal digits separated by colons, for example 2001:0db8:0000:0000:0000:ff00:0042:8329. The jump from IPv4's 32 bits to 128 bits was deliberate: 32 bits gives roughly 4.3 billion addresses, which the internet exhausted, whereas 128 bits gives about 3.4 × 1038 — enough to assign a unique address to every device for the foreseeable future and to hand out huge blocks to every organisation without scarcity. That abundance is why subnetting in IPv6 feels so different: a single site is routinely given a /48, leaving 16 bits of subnet and a full 64-bit host portion per network.

Compressed versus expanded notation

The same address can be written two ways, and both are valid. The expanded form always shows all eight groups with their leading zeros, so it is unambiguous and lines up nicely in tables. The compressed form follows RFC 5952 and is what you should use in configuration and documentation. Three rules produce the canonical compressed form: write hex digits in lowercase; strip leading zeros from each group (0db8 becomes db8, 0000 becomes 0); and replace the single longest run of all-zero groups with a double colon (::). The :: may appear only once in an address, and when two runs of zeros are the same length you compress the first one. Applying those rules, the example above compresses to 2001:db8::ff00:42:8329. The Compress & Expand card does this in both directions and correctly handles a :: placed at the start, middle or end.

Global Unicast, Unique Local and Link-Local

Not every IPv6 address is meant to travel the public internet, and the leading bits tell you the scope:

  • Global Unicast (2000::/3) — publicly routable addresses, the IPv6 equivalent of a public IPv4 address. Almost all addresses you see in the wild today start with 2 or 3.
  • Unique Local, ULA (fc00::/7, in practice fd00::/8) — private addresses for use inside a site, similar in spirit to IPv4's 10.0.0.0/8. The 40-bit global ID is chosen randomly so two networks that later merge are very unlikely to collide. ULAs are not routed on the public internet.
  • Link-Local (fe80::/10) — automatically configured on every IPv6 interface and valid only on the local link. They never cross a router and are used for neighbour discovery and as next-hop addresses.

How CIDR works in IPv6

CIDR notation in IPv6 is the same idea as in IPv4: a slash followed by the number of fixed leading bits, the prefix length. In 2001:db8::/48 the first 48 bits identify the network and the remaining 80 bits are free to address hosts and subnets within it. Because IPv6 has 128 bits, a block holds 2(128 − prefix) addresses — numbers so large they are usually quoted as powers of two or in scientific notation. The network (first) address has all host bits set to zero and the last address has them all set to one; unlike IPv4 there is no reserved broadcast address, so every address in the range is usable. The CIDR Calculator card works all of this out, including a human-readable estimate of the block size.

Frequently asked questions

Is the compressed address from this tool always correct per RFC 5952?

Yes. The Compress & Expand card outputs the single canonical form: lowercase digits, leading zeros stripped, and the longest run of zero groups (the first one, on a tie) replaced by ::. A lone zero group is never shortened to :: because the rule only applies to a run of two or more, matching RFC 5952.

Why does the integer value look so huge?

Because an IPv6 address is a 128-bit number, its decimal value can be up to roughly 3.4 × 1038 — far beyond what a normal 64-bit integer holds. The tool uses big-integer math in your browser so the decimal and 0x hexadecimal values are exact, not rounded.

Are the generated addresses safe to use?

They are random examples for testing, labs and documentation. Link-Local and Unique Local addresses are designed for private use, but you should still never assign or route a generated address on a network you do not control. For real deployments use the prefix your ISP or registry allocated to you.

Does anything I type get sent to your servers?

No. Every feature on this page — parsing, compression, the reverse-DNS name, the integer conversion, the CIDR math and the random generator — runs entirely in JavaScript in your browser. Nothing leaves your device.

Last reviewed: Reviewed by the

How this tool works: This tool runs in your browser and on our server in real time. Depending on the tool, results are computed directly from the input you provide or retrieved from live, authoritative data sources at the moment you run a lookup. We do not sell your data, and your lookups are kept private — any history shown here is stored only on your device.