Expand, compress and classify IPv6 addresses in your browser. Handles :: shorthand, prefixes, embedded IPv4 and RFC 5952 canonical form.
Use this free online IPv6 Expander & Analyzer directly in your browser. No signup required, no data leaves your device. Part of Utilier — a collection of 139+ developer utilities.
What is IPv6 Expander & Analyzer?
An IPv6 address is 128 bits written as eight groups of four hex digits, but almost nobody writes them in full — the :: shorthand collapses runs of zeros. This tool turns any valid form into its fully expanded version and into the canonical compressed form, and it tells you what kind of address it is. Everything happens locally.
Expand and compress: 2001:db8::1 expands to 2001:0db8:0000:0000:0000:0000:0000:0001 and compresses back to 2001:db8::1. The compressed form follows RFC 5952: lower-case, no leading zeros, and the longest zero run replaced by ::.
Shorthand and edge cases: It accepts a single :: anywhere, an optional /prefix, a %zone suffix (which it drops from the value), and an embedded IPv4 tail such as ::ffff:192.0.2.1, converting the dotted quad into two hex groups.
Classification: It recognises loopback (::1), unspecified (::), link-local (fe80::/10), unique local (fc00::/7), multicast (ff00::/8), documentation (2001:db8::/32), IPv4-mapped (::ffff:0:0/96) and global unicast, with notes for embedded IPv4 and multicast scope.
Why use the IPv6 tool?
IPv6 addresses are easy to misread because the same address has many textual forms. Normalising to a single canonical form is what lets you compare two addresses, match a firewall rule, or spot a typo.
Compare addresses reliably: Two addresses that look different can be identical once expanded. Normalising both to the canonical form makes an accidental mismatch — or a genuine one — obvious.
Understand what you are looking at: Knowing at a glance that fe80::1 is link-local, or that fc00:: is a private ULA, changes how you reason about routing and reachability.
Read IPv4-in-IPv6: When a log shows ::ffff:203.0.113.7, the tool pulls out the embedded IPv4 so you can see the real client address behind a dual-stack socket.
When to use the IPv6 tool
Use it whenever an IPv6 address needs to be normalised, compared or identified.
Expanding a :: shorthand address to check it against a full-form ACL or config.
Compressing a verbose address to the canonical RFC 5952 form before storing it.
Identifying whether an address is link-local, ULA, multicast or global before debugging reachability.
Extracting the IPv4 address embedded in an IPv4-mapped address from a log line.
Confirming two differently-written addresses are the same by expanding both.
How to use the IPv6 tool
One input, three outputs.
Enter an address: Paste any IPv6 form, with or without a /prefix, into the box.
Read the expanded form: The fully padded eight-group form appears first — the one to match against full-form configs.
Read the compressed form: The canonical RFC 5952 form is shown next; use it as the single normalised representation.
Check the type: The type row names the address class, and the notes below add detail like embedded IPv4 or multicast scope.
Key features
Full expansion: Turns any :: shorthand into the padded eight-group form for exact matching.
RFC 5952 compression: Produces the canonical lower-case form with the longest zero run collapsed to ::.
Embedded IPv4: Parses ::ffff:192.0.2.1 style addresses and surfaces the IPv4 they carry.
Type classification: Identifies loopback, unspecified, link-local, ULA, multicast, documentation, IPv4-mapped and global unicast.
Prefix aware: Keeps an optional /prefix through expansion and compression, and validates its 0-128 range.
Runs offline: No DNS, no lookups — the parsing and math happen in your browser tab.
Common use cases
Firewall and ACL work: Normalise addresses so rules match regardless of how the address was written.
Log analysis: Pull the real IPv4 out of IPv4-mapped addresses in dual-stack server logs.
Learning IPv6: See expansion, compression and address type together for any example address.
Examples
Expand a shorthand address
2001:db8::1
2001:0db8:0000:0000:0000:0000:0000:0001
The single :: stands in for the six all-zero groups between db8 and 1.
Compress a full address
2001:0db8:0000:0000:0000:0000:0000:0001
2001:db8::1
Leading zeros are dropped and the longest zero run becomes ::, per RFC 5952.
An IPv4-mapped address
::ffff:192.0.2.1
type: IPv4-mapped
embedded IPv4: 192.0.2.1
Dual-stack sockets often present IPv4 clients this way; the tool recovers the original IPv4 address.
Common mistakes to avoid
Comparing IPv6 addresses as raw text
Why it happens: The same address has many textual forms — 2001:db8::1, 2001:DB8:0:0:0:0:0:1 and the fully padded version are all equal — so a string comparison reports false mismatches and lets real duplicates slip through.
How to avoid it: Normalise both addresses to the canonical compressed form (or both to the expanded form) before comparing, which is exactly what this tool produces.
Using more than one :: in an address
Why it happens: The :: shorthand can appear at most once, because a second one would make the number of implied zero groups ambiguous. An address with two :: is invalid.
How to avoid it: Collapse only the single longest run of zeros with ::; write the rest explicitly. The tool rejects a second :: with a clear error.
Frequently asked questions
What does :: mean in an IPv6 address?
The double colon is shorthand for one or more consecutive groups of all-zero hextets. It can appear only once in an address, because a second one would make the count of omitted zero groups ambiguous. For example :: on its own is the all-zeros unspecified address, and ::1 is the loopback address with seven zero groups followed by 1.
What is the canonical form of an IPv6 address?
RFC 5952 defines a single recommended text form: lower-case hex, no leading zeros within a group, and the longest run of consecutive zero groups (of length two or more) replaced by ::. Using this canonical form consistently means the same address always looks the same, which matters for logging, comparison and access-control lists.
How can an IPv4 address appear inside IPv6?
IPv6 defines an IPv4-mapped range, ::ffff:0:0/96, whose last 32 bits hold an IPv4 address written in dotted-decimal, like ::ffff:192.0.2.1. Dual-stack systems use these to represent IPv4 clients over an IPv6 socket. This tool detects the pattern and shows the embedded IPv4 address separately.
What are link-local and unique local addresses?
Link-local addresses (fe80::/10) are valid only on a single network link and are not routed; every IPv6 interface has one. Unique local addresses (fc00::/7, in practice fd00::/8) are the IPv6 equivalent of private IPv4 ranges — usable within an organisation but not globally routable. The tool labels both so you know an address is not internet-reachable.