DNSfinder.net
Full Notation

IPv6 Expansion

The short form of an IPv6 address hides its zeros, which is fine for reading and awkward for anything that needs fixed positions. This tool writes each address out in full: eight groups of four hex digits, 39 characters, nothing implied. Paste up to 500 addresses, one per line, to get the expanded list for reverse DNS zones, fixed-width database columns, text sorting or subnet planning. The conversion happens in your browser.

Loading IPv6 Expansion...

Querying live edge resolvers and network infrastructure...

How to use the IPv6 Expansion

  1. Paste compressed IPv6 addresses into the box, one per line, for example 2001:db8::ff00:42:8329 or ::1.
  2. Read the Fully expanded card: each line shows all eight zero-padded groups, with the address type printed beneath it.
  3. Check any line marked Invalid IPv6 in red. Remove a /64 suffix or a port number and it will parse.
  4. Click Copy all and paste the list into your zone file, spreadsheet or import script.

What to look for

Always 39 characters

The expanded form is eight groups of four hex digits joined by seven colons: 32 digits and 39 characters every time. 2001:db8::1 becomes 2001:0db8:0000:0000:0000:0000:0000:0001. Because the width never changes, a given character position always holds the same bits, which is what column-based tools and scripts depend on.

How the double colon is filled

The tool counts the groups you wrote, subtracts that from eight, and inserts that many 0000 groups where the double colon stood. In fe80::202:b3ff:fe1e:8329 five groups are present, so three are added. Each remaining group is then padded on the left to four digits.

Dotted IPv4 tails become hex

An address written with an embedded IPv4 tail, such as ::ffff:192.0.2.1, expands to 0000:0000:0000:0000:0000:ffff:c000:0201. The four decimal octets turn into two hex groups, c000 and 0201. The value is unchanged. Only the notation of the last 32 bits differs from what you pasted.

Guide

When the full 32-digit form of an IPv6 address is needed

What expansion puts back

A compressed address leaves out two kinds of zero. Leading zeros inside a group are dropped, so 0db8 is written db8, and one run of all-zero groups is collapsed into a double colon. Expansion restores both. The result is the address as it sits in the packet header: 128 bits, sixteen bytes, each hex digit standing for one four-bit nibble.

Worked through for 2001:db8::ff00:42:8329: five groups are written, so the double colon stands for three groups of 0000. Pad db8 to 0db8 and 42 to 0042, and the address reads 2001:0db8:0000:0000:0000:ff00:0042:8329. The loopback address ::1 expands to seven zero groups followed by 0001, and :: alone, the unspecified address, to eight zero groups.

Reverse DNS and the nibble format

PTR records for IPv6 live under ip6.arpa, and the owner name is built from the expanded address: remove the colons, reverse the 32 hex digits, put a dot between each and append ip6.arpa. For 2001:db8::1 that gives 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. Every zero has to be present, which is why you cannot work from the short form.

Delegations follow the same pattern at nibble boundaries. The reverse zone for 2001:db8:abcd::/48 is d.c.b.a.8.b.d.0.1.0.0.2.ip6.arpa, the first twelve digits of the expanded prefix in reverse. This tool gives you the expanded address to start from. It does not write the reversed name. Once the record is published, IP lookup shows the PTR hostname it finds for the address.

Sorting, storing and comparing as text

Text sorting compares character by character, so compressed addresses sort badly: 2001:db8::10 lands before 2001:db8::2, and 2001:db8::a after both. In expanded form every address has the same length and the same digit positions, so an ordinary alphabetical sort in a spreadsheet or the sort command puts them in numeric order.

The same property helps storage and matching. A CHAR(39) column holds any expanded address, a match on the first 19 characters selects everything inside one /64, and two lists can be compared with a plain diff. If the database has a native inet type or a 16-byte binary column, use that instead. Expanded text is the fallback for systems that only understand strings.

Reading subnet boundaries in the full form

Prefix lengths count bits from the left and each hex digit is four bits, so the expanded form makes the boundaries visible. A /48 ends after the third group and a /64 after the fourth. A /56 ends two digits into the fourth group and a /60 three digits in. With the zeros written out you can see which digits belong to the site prefix, which to the subnet and which to the interface.

Take fd12:3456:789a:0001:0000:0000:0000:0001. The first three groups are the /48 site prefix, 0001 is the subnet number and the last four groups are the interface identifier. For the arithmetic, IPv6 range to CIDR lists the first and last address of any prefix, and local IPv6 generator gives you a private /48 to practise on.

Accepted input and the tool's limits

Any valid IPv6 text form is accepted: compressed or already expanded, upper or lower case, in square brackets, with a dotted IPv4 tail, or with a zone suffix such as %eth0, which is dropped from the output. Output is always lowercase. Up to 500 non-empty lines are processed per paste. Later lines are ignored.

A prefix such as 2001:db8:abcd::/48 is not an address and is marked Invalid IPv6, as are a bracketed address followed by a port and a bare IPv4 address. Strip the suffix first. Invalid lines stay in the copied output as a comment starting with # invalid: so line order survives. To return to the short form, paste the list into IPv6 compression.

Knowledge Base & FAQ

IPv6 Expansion FAQs

Common questions about the ipv6 expansion.

39: eight groups of four hexadecimal digits, which is 32 digits, plus seven colons. A text field for addresses should allow at least that. The longest legal spelling, with a dotted IPv4 tail, is 45 characters, which is why the C constant INET6_ADDRSTRLEN is 46 once the terminating null byte is counted.