IPv6 Expander
Expand a compressed IPv6 address to the full RFC 4291 §2.2 form: eight groups of four hex digits. The :: becomes exactly 8 − (groups before + groups after) zero groups. See exactly what happens to every segment, validate addresses, or expand a whole list at once.
Expanded (RFC 4291 §2.2 preferred form)
| Segment | Original | Expanded (4 digits) | What happened |
|---|
| # | Input | Expanded (full form) | Status |
|---|
The expansion rules (RFC 4291 §2.2)
- An expanded address is always eight groups of four hexadecimal digits: 39 characters total, separators included.
- Every group is padded with leading zeros back to four digits: db8 → 0db8, 42 → 0042.
- The double colon :: stands for exactly 8 − (groups written before it + groups written after it) all-zero groups.
- Hex digits are written in lowercase, matching the RFC 5952 §4.3 precedent for canonical text.
- Expansion never changes the address — the 128-bit value is identical; only the text form grows.
Worked examples
Each pair below was recomputed by hand from the rules above and cross-checked against the engine. Paste any input into the expander to see its per-segment steps.
| Input (compressed) | Expanded | Why |
|---|---|---|
| 2001:db8::ff00:42:8329 | 2001:0db8:0000:0000:0000:ff00:0042:8329 | :: → 3 zero groups (2 + 3 = 5 written) |
| ::1 | 0000:0000:0000:0000:0000:0000:0000:0001 | Loopback: :: → 7 zero groups |
| :: | 0000:0000:0000:0000:0000:0000:0000:0000 | Unspecified address: :: → 8 zero groups |
| fe80:: | fe80:0000:0000:0000:0000:0000:0000:0000 | :: at the end → 7 zero groups |
| 2001:db8:: | 2001:0db8:0000:0000:0000:0000:0000:0000 | :: at the end → 6 zero groups |
| 2001:DB8::FF00:42:8329 | 2001:0db8:0000:0000:0000:ff00:0042:8329 | Uppercase → lowercase, :: → 3 zero groups |
| 2001:db8:0:0:1:0:0:1 | 2001:0db8:0000:0000:0001:0000:0000:0001 | No :: present: padding only |
| 64:ff9b::c000:201 | 0064:ff9b:0000:0000:0000:0000:c000:0201 | NAT64 prefix: :: → 4 zero groups |
| ::ffff:c0a8:101 | 0000:0000:0000:0000:0000:ffff:c0a8:0101 | :: at the start → 5 zero groups |
| fe80::1%eth0 | fe80:0000:0000:0000:0000:0000:0000:0001 | Zone ID stripped, :: → 6 zero groups |
Related tools (different jobs)
- IPv6 Compressor — the reverse direction: takes the expanded form and produces the shortest RFC 5952 canonical form. Round-trip check: paste the result above into the compressor to get the short form back.
- IPv4 to IPv6 Converter — maps an IPv4 address into IPv6 transition encodings (mapped, 6to4, Teredo, ISATAP, NAT64). This page expands addresses that are already IPv6.
This page is the dedicated IPv6 expander: compressed/short form in, full RFC 4291 form out. It never shortens anything.
Frequently asked questions
What is the full (expanded) form of an IPv6 address?
The preferred form defined in RFC 4291 section 2.2: eight groups of four lowercase hexadecimal digits separated by colons — for example 2001:0db8:0000:0000:0000:ff00:0042:8329. That is always 39 characters: 32 hex digits plus 7 separators, encoding the full 128 bits with no shorthand.
How is the double colon expanded back into zero groups?
Count the groups before and after the double colon, subtract from eight, and insert that many all-zero groups. In 2001:db8::ff00:42:8329 there are 2 groups before and 3 after, so 8 minus 5 equals 3 zero groups inserted. The tool above shows this exact calculation for every segment, including how many groups the double colon stood for.
Why expand an IPv6 address instead of keeping the short form?
Short forms of the same address differ as text: 2001:db8::1, 2001:0db8::0001, and 2001:db8:0:0:0:0:0:1 are the identical address but compare as different strings. Expanding to the single full form makes firewall rules, ACL diffs, allowlists, and log searches reliable. Reverse DNS records (ip6.arpa) also require the address in expanded nibble form.
Does expanding change the address itself?
No. Expansion only changes the text representation — the 128-bit value is identical before and after. Compression removed leading zeros and replaced zero groups with a double colon; expansion restores exactly those digits. It is lossless by construction.
How is this different from the IPv6 compressor?
They are opposite directions. The IPv6 compressor (/tools/ipv6-compressor/) takes the expanded form and produces the shortest RFC 5952 canonical form. This page does the reverse only: compressed or short form in, full RFC 4291 form out. It never shortens anything, which keeps each tool focused on exactly one job. To check a round trip, paste the expanded result into the compressor and you get the short form back.
What input does the expander accept, and what is rejected?
Any valid IPv6 text: the full 8-group form, or a compressed form with exactly one double colon at the start, middle, or end. Square brackets from URI literals and zone IDs such as fe80::1%eth0 are tolerated and stripped before expansion. Rejected with a specific message: two double colons, triple colons, a group longer than 4 hex digits, more than 8 groups, and non-hex characters.
Can I expand many addresses at once?
Yes — switch to the Batch tab and paste one address per line. You get a table of inputs, expanded outputs, and per-line status, plus copy-all and CSV/TXT download. Thousands of lines are fine, and everything still runs locally in your browser.
Is my input sent to a server?
No. Expansion runs entirely in JavaScript inside your browser — no address you type is transmitted anywhere. You can disconnect from the network after the page loads and the tool keeps working.
Free tool by NRTechStudio