Skip to content
ZeroServer.tools

IPv6 Converter

Expand, compress, and normalize IPv6 addresses

Expanded to 2001:0db8:0000:0000:0000:8a2e:0370:7334
Full form2001:0db8:0000:0000:0000:8a2e:0370:7334
Compressed2001:db8::8a2e:370:7334
TypeGlobal Unicast
Binary0010000000000001 0000110110111000 0000000000000000 0000000000000000 0000000000000000 1000101000101110 0000001101110000 0111001100110100

How IPv6 address conversion works

IPv6 addresses are 128-bit numbers written as eight groups of four hexadecimal digits separated by colons. Two common abbreviation rules make them shorter: leading zeros in a group can be omitted (0db8db8), and a single consecutive run of all-zero groups can be replaced with :: (0:0:0:0::). This tool expands the input to the full 32-digit form, then applies both rules to produce the maximally-compressed form defined by RFC 5952. It also detects the address type (loopback, link-local, multicast, IPv4-mapped) and shows the binary representation.

Built and maintained by Meet Shah · Last updated

What this tool is used for

  • Expanding a compressed address so you can compare it character by character against another.
  • Normalising addresses from different sources before deduplicating them.
  • Checking whether two differently written addresses are actually the same.
  • Reading an IPv4-mapped address to see the embedded IPv4.
  • Producing the canonical form for a config file or an allowlist.

Frequently Asked Questions

Which compressed form is the correct one?
The one RFC 5952 defines, and those are requirements rather than preferences: :: must replace the longest run of zero groups, the first run wins when two tie, a single zero group must be written 0 and not ::, and hex digits must be lowercase. All four are applied here.
Why isn't 2001:db8:0:1:0:1:0:1 compressed?
Because every zero run in it is one group long, and RFC 5952 forbids :: for a single group. Both 2001:db8::1:0:1:0:1 and 2001:db8:0:1::1:0:1 are shorter and both are non-conformant — the ambiguity about how many groups :: absorbed is exactly what the rule exists to prevent.
How does the IPv4-mapped form work?
::ffff:192.168.1.1 is a full 128-bit address whose last 32 bits are an IPv4 address written in dotted-quad for readability. Each pair of octets becomes one hextet, so that example expands to end in ffff:c0a8:0101. The ::ffff:0:0/96 prefix is what marks it mapped rather than a native host.
What makes a group invalid?
Anything that is not one to four hexadecimal digits. Five digits cannot fit in 16 bits and letters past f are not hex at all, so both are rejected rather than padded or coerced — coercion produced a binary column that looked authoritative and was not.
Is link-local really the whole fe80::/10 range?
Yes, so everything from fe80 through febf is link-local, not only addresses beginning fe80. Unique local is fc00::/7, meaning fc00–fdff, and multicast is ff00::/8. Real stacks almost always use fe80::/64 with the remaining bits zero, which is why the wider allocation surprises people.

Common errors and gotchas

  • Using more than one double colon, which is ambiguous and invalid.
  • Assuming a single spelling. The same address has many valid forms, which is why normalising matters before comparison.
  • Comparing addresses as strings rather than normalising first, so an equal address looks different.
  • Overlooking the zone index on a link-local address, which is part of the identifier in context.
  • Treating an IPv4-mapped address as IPv4 in a rule that only matches one family.

Related Converters tools

Private & free — this tool runs entirely in your browser.

IndieKitShip your Next.js startup in days.affiliate