Guide
Deriving an IPv6 address from a MAC address with EUI-64
When IPv6 was designed, the idea was that a host could build the last 64 bits of its own address from its network card’s MAC address, so address configuration needed no server. The method is called modified EUI-64 and is still how many embedded devices and servers form their link-local address. The page applies the algorithm in either direction, so you can predict an address or recover the hardware address from one.
The three steps
Start with the 48-bit MAC address 34:56:78:9a:bc:de. First, split it in the middle and insert the two bytes ff:fe between the third and fourth byte: 34:56:78:ff:fe:9a:bc:de. Second, flip the universal/local bit, the 0x02 bit of the first byte; here 0x34 becomes 0x36. Third, write the eight bytes as four groups: 3656:78ff:fe9a:bcde. That 64-bit value is the interface identifier. Prefixed with fe80:: it gives the link-local address, and prefixed with a /64 advertised by a router it gives a global address under stateless address autoconfiguration.
Why the bit is flipped
In a MAC address the universal/local bit is 0 for a manufacturer-assigned address. In the IPv6 identifier the meaning was inverted so that locally chosen identifiers, such as manual ::1 or ::2 numbers, could be written with leading zeros without setting the bit by accident. The inversion is the single odd step in the algorithm and the one people forget.
Working backwards
The page’s second mode takes an IPv6 address, looks at its last 64 bits and checks for ff:fe in the middle. If it is present, it removes it and flips the bit back, giving a MAC address. This can reveal which vendor made a device, using the MAC Address Lookup, when you only have its IPv6 address. If the pattern is missing, the address was not built this way and no MAC address can be recovered from it.
Why you often will not see these addresses
EUI-64 identifiers are stable across networks, which allows tracking of a device wherever it connects, since the lower 64 bits never change. RFC 7217 defines stable but opaque identifiers that differ per network, and RFC 8981 defines temporary addresses that change over time. Windows, macOS, iOS, Android and most Linux distributions use one of these by default for global addresses. EUI-64 remains common for link-local addresses on servers, switches and routers.
A worked example
The page’s sample takes the MAC address 34:56:78:9a:bc:de. Inserting ff:fe gives 34:56:78:ff:fe:9a:bc:de, flipping the bit changes 34 to 36, and the interface identifier is 3656:78ff:fe9a:bcde. With the default prefix the link-local address is fe80::3656:78ff:fe9a:bcde; with 2001:db8:1:2:: the page shows 2001:db8:1:2:3656:78ff:fe9a:bcde. The EUI-64 bytes are listed as 36:56:78:ff:fe:9a:bc:de.
Limits
The result is a prediction. Whether a device actually uses it depends on its operating system and settings. The prefix should be 64 bits long, as automatic configuration requires. The tool does not check duplicates on the link.
Related tools
- MAC Address Lookup names the vendor of the recovered MAC address.
- MAC Address Formatter converts the address into the notation you need.
- IPv6 Compressor shortens the resulting address.
- IPv6 Subnet Calculator plans the /64 prefixes that carry these identifiers.
Checked against the current version of the EUI-64 Calculator on .

