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 (0db8 → db8), 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
JSON to YAML
Convert JSON into clean, readable YAML instantly.
YAML to JSON
Convert YAML configuration into valid JSON.
JSON to XML
Convert JSON structures into nested XML markup.
HWB to HEX Converter
Convert an HWB color to HEX.
JSON to SQL
Turn a JSON array of objects into SQL INSERT statements.
CSV to XML
Convert CSV rows into structured XML records.
XML to CSV
Flatten repeated XML records into CSV rows.
INI to JSON
Parse INI config sections and keys into JSON.