🔁 IPv4 to IPv6 Mapped Converter

Enter an IPv4 address to get its IPv4-mapped IPv6 address (::ffff:a.b.c.d) and the equivalent pure-hex IPv6 form.

Eighty zeros, sixteen ones, then the address

An IPv4-mapped address is not a translation. The 32 bits of the IPv4 address are dropped unchanged into the bottom of a 128-bit field, with a fixed pattern above them, as RFC 4291 lays out:

bits   0-79    all zeros
bits  80-95    all ones      (the ffff group)
bits  96-127   the IPv4 address, untouched

::ffff:0:0/96  is the whole mapped block, 2^32 addresses

The default 203.0.113.5 becomes ::ffff:203.0.113.5. Written purely in hex, 203 is cb, 0 is 00, 113 is 71 and 5 is 05, so the last two groups are cb00 and 7105 and the address is ::ffff:cb00:7105. Expanded in full that is 0000:0000:0000:0000:0000:ffff:cb00:7105 - the same 32 bits, wearing a different notation.

Where you meet these addresses

Comparisons are the trap: ::ffff:10.0.0.1 and 10.0.0.1 are the same host but different strings, so an allowlist matched by text will let one through and block the other. Normalise before comparing.

Frequently asked questions

What does ::ffff: in front of an IP address mean?

It marks an IPv4-mapped IPv6 address. The ffff group is a fixed tag saying the 32 bits after it are an ordinary IPv4 address held in a 128-bit slot.

Why do my server logs show ::ffff:192.168.1.10?

The listening socket is dual-stack. It handles IPv4 and IPv6 on one handle and hands every peer address back in 128-bit form, so IPv4 clients arrive wrapped. The client itself is using plain IPv4.

Is ::ffff:1.2.3.4 the same as ::1.2.3.4?

No. The second is an IPv4-compatible address, a different and deprecated format that RFC 4291 withdrew. Only the ::ffff: form is still in use.