IPv6 to IPv4 converter
Find the IPv4 address inside an IPv6 address, or learn plainly that there isn't one.
Result
4 addresses
4 converted
4 of 4 addresss converted. The values are one per line below, in the order you gave them.
Results (3, one per line)
192.0.2.1 8.8.8.8 192.0.2.45
All addresses4
| You typed | Address | Integer | Hex | Kind |
|---|---|---|---|---|
::ffff:192.0.2.1 | ::ffff:192.0.2.1 | – | – | IPv4-mapped Address |
64:ff9b::8.8.8.8 | 64:ff9b::808:808 | – | – | IPv4-IPv6 Translation (NAT64) |
2001:0:4136:e378:8000:63bf:3fff:fdd2 | 2001:0:4136:e378:8000:63bf:3fff:fdd2 | – | – | Teredo |
2606:4700:4700::1111 | 2606:4700:4700::1111 | – | – | Global unicast (2000::/3) |
Structured result (JSON) · 2.4 KB
{
"items": [
{
"input": "::ffff:192.0.2.1",
"ok": true,
"inputForm": "ipv6",
"version": 6,
"address": "::ffff:192.0.2.1",
"type": {
"kind": "ipv4-mapped",
"name": "IPv4-mapped Address",
"rfc": "RFC 4291",
"isPublic": false
},
"notes": [],
"embeddedIpv4": {
"type": "mapped",
"ipv4": "192.0.2.1",
"explanation": "IPv4-mapped IPv6 address (::ffff:0:0/96). Dual-stack sockets use it to represent an IPv4 peer; it is not routable on the IPv6 Internet."
}
},
{
"input": "64:ff9b::8.8.8.8",
"ok": true,
"inputForm": "ipv6",
"version": 6,
"address": "64:ff9b::808:808",
"type": {
"kind": "nat64",
"name": "IPv4-IPv6 Translation (NAT64)",
"rfc": "RFC 6052",
"isPublic": false
},
"notes": [],
"embeddedIpv4": {
"type": "nat64-well-known",
"ipv4": "8.8.8.8",
"explanation": "NAT64 well-known prefix 64:ff9b::/96 (RFC 6052): a NAT64 gateway translates this to the embedded IPv4 address."
}
},
{
"input": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
"ok": true,
"inputForm": "ipv6",
"version": 6,
"address": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
"type": {
"kind": "teredo",
"name": "Teredo",
"rfc": "RFC 4380",
"isPublic": false
},
"notes": [],
"embeddedIpv4": {
"type": "teredo",
"ipv4": "192.0.2.45",
"explanation": "Teredo address (2001::/32, RFC 4380). It encodes the Teredo server, plus the NAT-mapped client IPv4 address and UDP port, both bit-inverted.",
"teredo": {
"server": "65.54.227.120",
"client": "192.0.2.45",
"port": 40000,
"flags": 32768
}
}
},
{
"input": "2606:4700:4700::1111",
"ok": true,
"inputForm": "ipv6",
"version": 6,
"address": "2606:4700:4700::1111",
"type": {
"kind": "global",
"name": "Global unicast (2000::/3)",
"isPublic": true
},
"notes": [],
"embeddedIpv4": {
"type": "none",
"explanation": "No IPv4 address is embedded: this is a native IPv6 address. Its last 32 bits are not an IPv4 address."
}
}
],
"totals": {
"items": 4,
"ok": 4,
"failed": 0
},
"truncated": false
}When an IPv6 address contains an IPv4 one
Most IPv6 addresses contain no IPv4 address at all, and no tool can work one out from them. A few transition methods do place an IPv4 address inside an IPv6 one on purpose. If your address matches one of those patterns, this page pulls out the IPv4 address and tells you which method put it there. For a native address, it says so plainly instead of inventing an answer.
| Pattern | Type | Example | Embedded IPv4 |
|---|---|---|---|
::ffff:a.b.c.d | IPv4-mapped | ::ffff:192.0.2.1 | 192.0.2.1 |
64:ff9b::/96 | NAT64 (well-known) | 64:ff9b::8.8.8.8 | 8.8.8.8 |
64:ff9b:1::/48 | NAT64 (local use) | 64:ff9b:1::192.0.2.33 | 192.0.2.33 |
2002:aabb:ccdd::/48 | 6to4 | 2002:c000:221::1 | 192.0.2.33 |
2001::/32 | Teredo | 2001:0:4136:e378:8000:63bf:3fff:fdd2 | Server 65.54.227.120, client 192.0.2.45, port 40000 |
...:5efe:a.b.c.d | ISATAP | fe80::5efe:192.0.2.1 | 192.0.2.1 |
How to use it
- Paste addressesAdd one per line, up to 500, in any IPv6 notation. A zone ID such as
%eth0is ignored. Brackets, ports and/64-style prefix lengths are not accepted here, so remove them first. - Read the typeEach result names the method, or says there is no embedded address for a native one, and explains it in a sentence.
- Use the IPv4 addressIf the extracted address is public, take it to the IP WHOIS lookup to see who owns it.
Reading Teredo and other special forms
A Teredo address packs several facts into one address: 2001:0:, then the Teredo server's IPv4 address, some flags, the client's mapped UDP port and the client's public IPv4 address. The port and the client address are stored flipped (every bit inverted), so they do not look like the numbers they stand for. LookupOwl flips them back for you. Take 2001:0:4136:e378:8000:63bf:3fff:fdd2:
- The server part,
4136:e378, is65.54.227.120. - The flags,
8000, have the cone-NAT bit set. - The port part,
63bf, flips to9c40, which is 40000. - The client part,
3fff:fdd2, flips toc000:022d, which is 192.0.2.45.
For NAT64, the place where the IPv4 bytes sit depends on the prefix length (RFC 6052). If your network uses its own prefix, type it under More options so the right bytes are read. Without one, the well-known prefix is assumed.
When there is nothing to extract
- A normal global address like
2606:4700:4700::1111. It is a native IPv6 address and has no IPv4 equivalent. - Digits that look like IPv4.
2001:db8::192:168:1:1is just hex groups, not192.168.1.1. - Loopback.
::1is the IPv6 loopback address and carries no IPv4 address either. - Expecting the result to identify a person. Depending on the method, the IPv4 address is a client, a tunnel gateway or the server a NAT64 gateway will contact, so check the type before you draw conclusions.
- Brackets, ports and prefixes.
[::ffff:192.0.2.1]:80and::ffff:192.0.2.1/96are rejected with an explanation. Paste the bare address. - IPv4-compatible
::a.b.c.d. Deprecated. The tool still decodes it and marks it as such.
How it works and which standards apply
The address is read as a 128-bit number and tested against each known embedding prefix. When one matches, the IPv4 bytes are lifted from the places that method defines. Nothing is looked up on the network. The standards behind the patterns are RFC 4291 (IPv4-mapped), RFC 6052 and RFC 8215 (NAT64), RFC 3056 (6to4), RFC 4380 (Teredo) and RFC 5214 (ISATAP). To go the other way, see IPv4 to IPv6.
Questions people ask
How do I get the IPv4 address from an IPv6 address?
Only if the IPv6 address was built to carry one. The patterns are IPv4-mapped, NAT64, 6to4, Teredo and ISATAP. Paste your address above and the result names the pattern and shows the IPv4 address. If none fits, the address is native IPv6, and there is nothing to extract.
Why does my log show ::ffff:203.0.113.5?
Your server listens on an IPv6 socket that also accepts IPv4, and an IPv4 client has connected to it. The operating system shows that client as an IPv4-mapped IPv6 address. The real client address is 203.0.113.5. Drop the ::ffff: part when you compare it with IPv4 rules or allow-lists.
Can a normal IPv6 address be converted to IPv4?
No. IPv4 and IPv6 are separate address spaces, and a native IPv6 address says nothing about any IPv4 address. If you want to know whether the same host also has an IPv4 address, find its hostname with a reverse DNS lookup, if it has one, then check that name's A records.
How does 6to4 map an address?
The four bytes of the IPv4 address follow 2002: as two groups of hex. For example, 192.0.2.33 becomes 2002:c000:221, and the whole /48 behind it belonged to the owner of that IPv4 address. To read one back, turn the two groups after 2002: into four decimal bytes: c0 00 02 21 is 192.0.2.33.
What does a NAT64 address look like?
Usually 64:ff9b:: followed by the IPv4 address, for example 64:ff9b::8.8.8.8, which is also written 64:ff9b::808:808. Some networks use their own prefix instead, with a length of /32, /40, /48, /56, /64 or /96. For those, type the prefix under More options so the tool reads the right bytes.
What is a Teredo address?
It is an IPv6 address in 2001::/32 made by a tunnelling method that carries IPv6 across IPv4 networks and NAT devices. It holds the Teredo server's IPv4 address, the client's public IPv4 address and a UDP port. It is rarely used today, but it still turns up in old logs and security data.
Does a Teredo address reveal who I am?
It reveals the client's public IPv4 address and UDP port, so treat it like any other IP address in your logs. An IP address can point to a household or a company. Whether it counts as personal data depends on your local rules and on what else you hold about the person.
Use it from AI, the API or the command line
Every LookupOwl tool is also a free API and an MCP tool, with no key and no account. This one is ip_convert. Please be kind to the rate limits.
curl "https://lookupowl.com/api/v1/tools/ip-convert?q=%3A%3Affff%3A192.0.2.1%0A64%3Aff9b%3A%3A8.8.8.8%0A2001%3A0%3A4136%3Ae378%3A8000%3A63bf%3A3fff%3Afdd2%0A2606%3A4700%3A4700%3A%3A1111"claude mcp add --transport http lookupowl https://lookupowl.com/mcp