🔁 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
- In application logs. A dual-stack socket bound to :: accepts IPv4 connections and reports the peer in mapped form, which is why a Java, Node or nginx log shows ::ffff:192.168.1.10 for a plain IPv4 client.
- Never on the wire. Mapped addresses are an API convention inside a host. No packet carries one, and no router forwards the /96.
- Not the same as NAT64. The 64:ff9b::/96 prefix from RFC 6052 also holds an IPv4 address in its low 32 bits, but that traffic really is routed, to a translator.
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.