IPv4 to IPv6 Converter
Type an IPv4 address to see every IPv6 address that carries it, from the IPv4-mapped form in your logs to NAT64 and 6to4, written the RFC 5952 way and in full, each marked in use, rare today or deprecated.
Read as dotted
Dotted, one number (3221225985), hex or a URL. Converted in your browser; nothing is sent.
How do I convert IPv4 to IPv6?
Write the IPv4 address's 32 bits as two hex groups and put them where an IPv6 format keeps them: for the usual IPv4-mapped form that is after ::ffff:, so 192.0.2.33 becomes ::ffff:c000:221, written ::ffff:192.0.2.33.
Each decimal part becomes two hex digits (192 = c0, 0 = 00, 2 = 02, 33 = 21), and the four pairs make two 16-bit groups. RFC 5952 recommends keeping the dotted form after ::ffff: because it shows what the bits mean.
This only changes how the address is written. It doesn't give a device an IPv6 address or an IPv6 connection; those come from the network.
c00002023321
Your IPv4 in hex192.0.2.33 is c0 00 02 21: the 8 digits every IPv6 form carries.Where the bits goThe same 8 digits move to bits 96–127 for mapped and NAT64, and to bits 16–47 for 6to4.Still in use?In use, rare today or deprecated, from the RFCs and the traffic data.Your network's prefixEnter a NAT64 prefix and length to get the address your translator uses.Short or fullRFC 5952 text, the other spelling under it, and the full 32 digits with one switch.Which IPv6 form should I use?
Use the IPv4-mapped form in software (sockets, logs, databases) and your network's NAT64 prefix on an IPv6-only network; the other forms are rare today or retired.
Mapped addresses never appear on the wire. NAT64 addresses do, and the well-known prefix 64:ff9b::/96 must only carry global IPv4 addresses (RFC 6052). 6to4 needs a public IPv4 address too.
IPv4-compatible addresses are deprecated, and SIIT's IPv4-translated prefix gave way to RFC 6052 prefixes.
| Format | Use it for | Status | 192.0.2.33 becomes |
|---|---|---|---|
| IPv4-mappedRFC 4291 | Sockets, logs and databases | In use | ::ffff:192.0.2.33 |
| NAT64, well-known prefixRFC 6052 | IPv6-only networks reaching IPv4 | In use | 64:ff9b::c000:221 |
| NAT64, local-use blockRFC 8215 | A network's own NAT64, inside 64:ff9b:1::/48 | In use | 64:ff9b:1::c000:221 |
| 6to4RFC 3056 | Automatic tunnels, now rare | Rare today | 2002:c000:221::/48 |
| ISATAPRFC 5214 | Tunnels inside one site, now rare | Rare today | fe80::5efe:c000:221 |
| IPv4-translatedRFC 2765 | Old stateless translation (SIIT) | Rare today | ::ffff:0:192.0.2.33 |
| IPv4-compatibleRFC 4291 | Nothing: retired | Deprecated | ::c000:221 |
What is an IPv4-mapped IPv6 address?
It is an IPv4 address written as an IPv6 one: 80 zero bits, 16 one bits, then the 32-bit IPv4 address (::ffff:0:0/96), so software with one IPv6 socket can handle IPv4 peers too.
Mapped addresses live inside software only; IANA marks the block as not forwardable. That has a security side: a packet from ::ffff:127.0.0.1 may pass checks meant for the machine itself, so filters should unmap before comparing (RFC 4942).
Databases recognise them: MySQL's IS_IPV4_MAPPED() accepts the dotted or hex tail, and PostgreSQL prints them in mixed notation.
0000:0000:0000:0000:000016 one bitsffffthe IPv4 address, 32 bits192.0.2.33accept() → ::ffff:192.0.2.33How does the transition from IPv4 to IPv6 work?
Networks run both protocols side by side (dual stack), and IPv6-only networks reach the IPv4 internet through translation: NAT64 with DNS64, or 464XLAT on phones.
With NAT64, DNS64 builds an AAAA record from a host's A record, and the translator carries the traffic to IPv4. With 464XLAT, a translator on the phone (CLAT) turns the app's IPv4 packets into IPv6, and the provider's NAT64 (PLAT) turns them back into IPv4 on shared public addresses.
The move is about half done: on 22 October 2026, 47.13% of users reached Google over IPv6 (Google), and APNIC Labs counted 43.8% of users worldwide as IPv6-capable.
Dual stack
IPv4 + IPv6IPv4 · IPv6Server192.0.2.33 · 2001:db8::33NAT64 + DNS64
IPv6IPv6DNS64AAAA 64:ff9b::c000:221IPv6NAT6464:ff9b::/96IPv4IPv4 server192.0.2.33464XLAT
IPv4IPv4CLATPhoneIPv6PLATNAT64IPv4IPv4 server192.0.2.33
of users are IPv6-capable (APNIC Labs)Can IPv4 and IPv6 talk to each other?
Not directly: an IPv6-only host and an IPv4-only host need a translator between them, such as NAT64 for IPv6 clients reaching IPv4 servers, while dual-stack hosts simply use the protocol the other side has.
The two protocols have different packet formats, so something must rewrite each packet. Stateless translators (SIIT, RFC 7915) map addresses one to one using RFC 6052 prefixes; NAT64 shares IPv4 addresses among many IPv6 clients.
That is why most networks keep both protocols running: a dual-stack device needs no translation at all.
| Client ↓ · Server → | IPv4 only | IPv6 only | Dual stack |
|---|---|---|---|
| IPv4 only | IPv4 | translator (SIIT) | IPv4 |
| IPv6 only | NAT64 + DNS64 | IPv6 | IPv6 |
| Dual stack | IPv4 | IPv6 | either |
How do I convert IPv4 to IPv6 in code?
Most languages do it in one call: Python's IPv4Address.ipv6_mapped, Go's netip with Is4In6 and Unmap, MySQL's INET6_ATON with IS_IPV4_MAPPED, and PostgreSQL's inet type.
Python 3.13 added ipv6_mapped and prints mapped addresses in dotted form. Go's Addr.String prints ::ffff:192.0.2.33 and Unmap returns the plain IPv4 address. Node's net.isIP() returns 6 for a mapped address, and net.BlockList matches IPv4 rules against it.
› import ipaddress ipaddress.IPv4Address('192.0.2.33').ipv6_mapped IPv6Address('::ffff:192.0.2.33')
Python 3.13+
› a := netip.MustParseAddr("::ffff:192.0.2.33") fmt.Println(a.Is4In6(), a.Unmap()) true 192.0.2.33
Go net/netip
› SELECT IS_IPV4_MAPPED(INET6_ATON('::ffff:192.0.2.33')); 1
MySQL 8.4
› SELECT inet '::ffff:192.0.2.33'; ::ffff:192.0.2.33
PostgreSQL 16
› net.isIP('::ffff:192.0.2.33') 6
Node.js net
Frequently asked questions
What is 192.168.1.1 in IPv6?
Does converting IPv4 to IPv6 give my device an IPv6 address?
Which IPv6 form should I store in a database?
Is ::ffff:192.0.2.1 the same as ::ffff:c000:201?
Why is 64:ff9b::10.1.1.1 invalid?
What is the 6to4 address of an IPv4 address?
How many people use IPv6?
How do IPv6-only phones reach IPv4 websites?
How do I convert IPv4 to IPv6 in Python?
Is anything I type sent to your server?
Related tools
IPv6 to IPv4
Find the IPv4 address inside an IPv6 one: mapped, NAT64, 6to4, Teredo and ISATAP, bit by bit
IPv6 Compression
Shorten or expand IPv6 addresses the RFC 5952 way and see which rule removed each zero
IP to Decimal Converter
IP address to decimal, hex, binary and octal and back, with each octet's place values
What Is My IP
Your public IPv4 and IPv6 at once, with the network, location and a VPN check
IPv6 Test
Test if your IPv6 works, which family your browser picks and if a site has IPv6
Subnet Calculator
Network, broadcast, usable hosts and masks for any IPv4 or IPv6 block, plus VLSM, splits and cloud subnets
Reverse DNS Lookup
Find hostnames associated with any IP address via PTR records
DNS Lookup
Every DNS record from the domain's own nameservers, beside Google's and Cloudflare's cache