RFC 5952 IPv6 Format
{{ displayCompressed }}
{{ displayExpanded }}
Valid IPv6 {{ addressType }} /{{ prefixLength }} Zone {{ zoneId }} IPv4 tail ready
IPv6 compression and expansion input
Use forms like 2001:db8::1/64, fe80::1%en0, or ::ffff:192.0.2.128.
Choose lowercase for standards-oriented docs, uppercase for legacy runbooks.
Turn on for ::ffff:192.0.2.128 or other mixed-stack address reviews.
{{ ipv4_tail ? 'On' : 'Off' }}
Use 16 for hextets, 8 for bytes, 4 for nibbles, or 1 for raw bits.
Copy the canonical compact form for documentation, ACLs, and tickets.
{{ copiedRowKey === 'display-compressed' ? 'Compressed form copied.' : 'Ready to copy compact IPv6 text.' }}
Copy the padded form when every hextet must be visible for review.
{{ copiedRowKey === 'display-expanded' ? 'Expanded form copied.' : 'Ready to copy full IPv6 text.' }}
Field Value Copy
{{ row.label }} {{ row.value }}
Group Hex Decimal Copy
{{ row.index }} {{ row.hex }} {{ row.decimal }}

        
Customize
Advanced
:

Introduction:

IPv6 addresses are 128-bit interface identifiers, but people rarely write all 128 bits out in full. The same address may appear with dropped leading zeros, a double-colon zero run, uppercase or lowercase hexadecimal letters, a prefix suffix, or the last 32 bits written as familiar IPv4 dotted decimal. When values move between router output, tickets, DNS work, spreadsheets, and firewall rules, a harmless spelling change can look like a different address.

Normalization gives the address one reliable shape before you compare it. Expanding the address exposes all eight 16-bit hextets, while compression gives a short form that is easier to paste into notes and configuration review. The important check is not only whether the text is legal, but whether the prefix, zone identifier, embedded IPv4 bytes, and reverse DNS name still match the record you meant to inspect.

Prefix notation such as /64 describes how many leftmost bits belong to the network prefix. A zone identifier such as %en0 is local context for scoped addresses, most often link-local addresses on a host with more than one interface. Neither suffix changes the 128-bit address value, but dropping either one can make copied documentation misleading.

Formatting cannot prove that an address is assigned, reachable, routable, or safe to use in production. It can remove ambiguity from the text you were given, expose the hextets that matter for a review, and give you a reverse DNS name without manual nibble reversal.

IPv6 text normalized from input to expanded hextets, compressed form, and reverse DNS order

Technical Details:

An IPv6 text form must resolve to eight 16-bit hexadecimal groups. RFC 4291 allows omitted leading zeros within a group, one :: shorthand for one or more all-zero groups, CIDR-style prefix lengths, and mixed IPv6 plus IPv4 notation for the low-order 32 bits. RFC 5952 narrows those choices for canonical text by preferring lowercase hexadecimal, suppressing leading zeros, and shortening the longest zero run once when that run is at least two hextets long.

The parser first works on the first nonblank line. It separates a valid prefix suffix from /0 through /128, keeps a zone identifier that follows %, and turns a dotted IPv4 tail into the final two hextets when all four octets are from 0 to 255. The remaining address must then expand into exactly eight legal hextets. Invalid attached details can produce warnings while the base address still normalizes.

The expansion rule can be summarized as eight hextets of 16 bits each.

8 × 16 = 128 bits

The reverse DNS name uses the expanded 32 hexadecimal nibbles, reversed one nibble at a time, followed by ip6.arpa.

PTR = reverse_each_hex_nibble(expanded_address) + ".ip6.arpa"
IPv6 parsing rules used before formatting
Input part Accepted form Result after parsing
Hextets One to four hex digits per group, with either eight groups or one :: fill Padded to eight lowercase four-digit groups for the canonical expanded value
Prefix length A trailing decimal /n where 0 <= n <= 128 Shown as the preserved prefix length; invalid suffixes are ignored with a warning
Zone identifier Text after %, such as %en0 or %3 Shown separately from the 128-bit address value
Dotted IPv4 tail Four decimal octets from 0 to 255 after the final colon Converted into the final two hextets and marked as an embedded IPv4 tail
Extra pasted lines Only the first nonblank line is parsed Additional nonblank lines are ignored and counted in the warning list
Address type labels and the patterns they check
Type label Pattern checked Operational meaning
Unspecified ::/128 The all-zero address, normally used before a usable address is known
Loopback ::1/128 A host referring to itself
Multicast ff00::/8 A group destination rather than one interface
Link-local fe80::/10 Valid only on a local link and often paired with a zone identifier
Unique-local fc00::/7 Private-style internal IPv6 space
6to4 2002::/16 A transition prefix associated with 6to4
Teredo 2001:0000::/32 A transition prefix associated with Teredo
Documentation 2001:0db8::/32 Example space commonly used in manuals and lab notes
IPv4-mapped ::ffff:0:0/96 An IPv4 address carried in the final 32 bits
Global No listed pattern matched A fallback label from this compact classifier, not a complete special-purpose registry decision

The Address Details result also splits the expanded address at a fixed /64 point into a network half and an interface half. That view is useful because many IPv6 subnets use 64-bit interface identifiers, but it is not a routing inference. A typed prefix such as /48, /56, or /127 remains its own field.

The dotted-tail display is another presentation choice. It can show the final 32 bits as four decimal IPv4 octets, while the expanded and compressed canonical values still come from the same 128-bit address.

Everyday Use & Decision Guide:

Paste the address exactly as you received it when you are trying to audit another source. Keeping the prefix and zone text intact lets the result show whether those suffixes were present in the original record. If the value came from a command that used a link-local address, the zone identifier is often the detail that decides which local interface the command meant.

Use the compressed result for clean runbook text, ticket comments, and configuration snippets where the short spelling is easier to read. Use the expanded result for careful comparison, reverse DNS preparation, and reviews where the position of each hextet matters. If two pasted values appear different, expand both before deciding they point to different 128-bit addresses.

Hextet Breakdown is best for finding exactly which group changed. Binary Blocks is more useful when a prefix boundary, byte boundary, or nibble boundary is the part under review. The JSON result is a compact audit record of the input, parsed suffixes, warnings, canonical forms, address type, and display settings.

  • Keep lowercase output for standards-oriented documentation and comparisons.
  • Use uppercase display only when matching an older document or team convention.
  • Turn on dotted-tail display when the final 32 bits should remain recognizable as IPv4.
  • Treat the type badge as a quick range hint, then verify routing, assignment, and DNS separately.
  • Do not use the fixed /64 split as proof that the real network prefix is /64.

Step-by-Step Guide:

  1. Enter one IPv6 address or IPv6/CIDR value in the address field.
  2. Leave a valid prefix attached when the source value includes one, such as 2001:db8::42/64.
  3. For scoped addresses, place the zone identifier before the prefix, for example fe80::1%en0/64.
  4. Open Advanced if you need uppercase display, dotted IPv4 tail rendering, or binary groups of 1, 4, 8, or 16 bits.
  5. Read the compressed and expanded outputs first, then use Address Details, Hextet Breakdown, Binary Blocks, or JSON for the evidence you need.
  6. If validation fails, check for a second ::, a hextet longer than four hex digits, an IPv4 octet outside 0 to 255, or a prefix outside /0 to /128.

Interpreting Results:

A valid result means the text could be turned into one legal 128-bit IPv6 value after the optional prefix, zone identifier, and dotted tail were handled. It does not mean the address is assigned to a host, visible in DNS, permitted by a firewall, or reachable from your network.

How to interpret common IPv6 formatter outputs
Output How to read it Verify before using
Compressed form The short spelling for the normalized address Confirm it still matches the expanded hextets you expect
Expanded form All eight hextets padded to four hex digits Use this before manual comparison or reverse DNS work
Warnings The base address may be valid while an extra line, bad prefix, or empty zone marker was ignored or separated Fix the warning source before copying the result into a permanent record
Reverse name The nibble-reversed ip6.arpa name for PTR lookup work Do not reverse the string again before creating or checking PTR data
Type label A match against a small set of address patterns Use authoritative registries or local policy for complete address classification

False confidence usually comes from copying only the pretty address. Keep the prefix badge, zone badge, warnings, and address type visible while you compare the normalized result against the source system.

Common Mistakes:

Common IPv6 formatting mistakes and corrections
Mistake Why it happens Quick fix
Treating Global as proof of public routing The label appears when none of the implemented patterns matched. It is not a full IANA registry lookup and cannot see local routing policy. Check the authoritative registry, allocation record, and local route table before using the address as public evidence.
Dropping %zone from a link-local value The 128-bit address still validates after the suffix is removed, so the missing interface context can be easy to miss. Keep the zone identifier in command notes when the original address was scoped to a local interface.
Reading the fixed /64 split as the entered prefix The details table always shows a 64-bit network half and a 64-bit interface half for inspection. Use the Prefix length field for the suffix you entered, and use the fixed split only as a hextet review aid.
Reversing the PTR name a second time IPv6 reverse DNS already lists the expanded address nibbles from low order to high order. Copy the Reverse name exactly as shown when preparing or checking PTR data.

Worked Examples:

Documentation address cleanup

Entering 2001:0db8:0000:0000:0000:ff00:0042:8329 produces the compressed form 2001:db8::ff00:42:8329 and the expanded form 2001:0db8:0000:0000:0000:ff00:0042:8329. The type label is Documentation, which is a useful warning when a sample address has slipped into an inventory note.

Link-local address with local scope

Entering fe80::1%en0/64 keeps en0 as the zone identifier and 64 as the prefix length while the address itself expands to fe80:0000:0000:0000:0000:0000:0000:0001. That separation matters when the same link-local value could exist on more than one interface.

IPv4-mapped address review

Entering ::ffff:192.0.2.128 converts the dotted bytes into the final hextets c000:0280. The compressed canonical value becomes ::ffff:c000:280, and dotted-tail display can keep the embedded IPv4 address readable for mixed-stack troubleshooting.

Prefix warning recovery

Entering 2001:db8::1/129 still allows the base address to normalize, but the prefix is outside the allowed /0 to /128 range. Correct the suffix before using the result in subnet documentation or access-control notes.

FAQ:

Does a valid result prove the address is reachable?

No. Validation only proves that the text can represent one legal IPv6 address. Reachability, assignment, DNS, firewall policy, and routing must be checked with network tools and authoritative records.

Why did the address validate while a warning appeared?

Warnings describe attached text or paste shape, not always the address itself. An out-of-range prefix, an invalid prefix suffix, an empty zone marker, or extra pasted lines can trigger a warning while the first address still expands correctly.

When should a zone identifier be kept?

Keep it when the address is scoped, especially for link-local values such as fe80::1%en0. The zone tells the local host which interface or scope to use, and RFC 4007 treats that notation as local to the node that interprets it.

Why does the reverse name contain so many dots?

IPv6 reverse DNS works at hexadecimal nibble granularity. A 128-bit address has 32 hex nibbles, and the PTR name lists those nibbles from low order to high order before ip6.arpa.

Is the type label a complete IANA classification?

No. It checks the implemented patterns shown in the technical table and uses Global when none match. Special-purpose registry status can be more detailed than that fallback label.

Is the address sent to a server?

No slug-specific server helper is used for parsing or exports. The work runs in the browser, but non-default inputs can appear in the page address through query parameters, so do not share a copied page link when the address should remain private.

Glossary:

Hextet
One 16-bit IPv6 group written as one to four hexadecimal digits.
Prefix length
The number after / that says how many leftmost bits belong to the network prefix.
Zone identifier
Local scope text after %, such as an interface name or numeric zone index.
Dotted IPv4 tail
The final 32 bits of an IPv6 address shown as four decimal IPv4 octets.
Reverse name
The nibble-reversed ip6.arpa name used for IPv6 PTR record work.