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 with2or3. - Unique Local, ULA (
fc00::/7, in practicefd00::/8) — private addresses for use inside a site, similar in spirit to IPv4's10.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.
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.