MAC Address Generator

Generate a random MAC address. Everything runs in your browser.

Advertisement

What a MAC address is made of

A Media Access Control address is a 48-bit identifier burned into a network interface, written as six groups of two hexadecimal digits, for example 3C:5A:B4:12:9F:0E. That 48-bit space holds 281,474,976,710,656 possible values. The first 24 bits are the Organizationally Unique Identifier (OUI), a block the IEEE assigns to a hardware vendor; the remaining 24 bits are chosen by that vendor for each unit it ships. Two bits inside the first octet carry meaning rather than identity: the least significant bit is the individual/group flag, set when the frame is multicast, and the second least significant bit is the universal/local flag, set when the address was assigned locally instead of by the IEEE.

That second bit is the reason locally administered addresses are so common in virtualisation. Hypervisors and container runtimes assign addresses with the local bit set so they can never collide with a registered vendor block. If you need to confirm what a string actually means before using it in a config file, the MAC address validator breaks the octets down for you.

How the generator works

Each click draws six independent bytes, each an integer from 0 to 255, converts every byte to two uppercase hex digits, and joins them with colons. There is no sequence and no reuse: consecutive clicks give unrelated values. The work happens in the page with JavaScript, so the address is never sent to a server.

Because the six bytes are uniformly random, the first octet is random too. That means the local bit will be set in about half of the addresses you get, and so will the multicast bit, since each is a single bit of a random draw. Real vendor-issued unicast addresses practically never have the multicast bit set, because group addresses come from fixed blocks such as 01:00:5E for IPv4 and 33:33 for IPv6. If your test data must look like factory-assigned unicast hardware, read the first octet before pasting it: when its last hex digit is 0, 1, 4, 5, 8, 9, C or D, the local bit is clear.

Checking a generated address by hand

Say you are building a spreadsheet of 40 staging virtual machines and you need one address per row. You click generate and get 6E:3C:91:0A:7F:22. Take the first octet, 6E. In binary that is 0110 1110. The last bit is 0, so the address is unicast. The second-to-last bit is 1, so the address is locally administered: exactly what a hypervisor would hand out, and exactly what you want in a lab where nothing may clash with real hardware.

Now compare an address like 3C:5A:B4:12:9F:0E. The first octet 3C has its second-to-last bit clear, so it claims to be universally administered, meaning the 3C:5A:B4 prefix is registered to some manufacturer. Using it on a live segment risks duplicating an address that already exists on a real device, which causes flapping in switch MAC tables and unpredictable delivery. Keep generated values inside lab documentation, packet-capture fixtures and configuration templates.

When to use it, and where it stops

The generator is for placeholder data: sample rows in an asset inventory, MAC-based DHCP reservation entries you will replace later, example values in documentation, and test payloads for scripts that parse hardware addresses. It is not a spoofing tool: a browser cannot change the address of your network card. It also produces a new value every time, so write down the one you use if the rest of your test depends on it being stable; for identifiers that only need to be unique and not look like hardware, the UUID generator is the better fit.

One practical limit: the output is always six bytes in colon form. Some platforms want hyphens, some want Cisco dotted notation such as 6e3c.910a.7f22, and EUI-64 interfaces want eight bytes. Reformatting is a one-line change in a script, but the tool will not do it for you. When you need to know which public address a test machine presents to the outside world, use IP lookup rather than a MAC tool, since MAC addresses never leave the local segment.

Frequently asked questions

It is possible. Any random 48-bit value can land inside a block registered to a vendor, so a generated address may look identical to real hardware. The chance of matching a specific device on your own network is very small, but it is not zero, which is why generated values belong in documentation and test data rather than on production segments.
No. All six bytes are drawn at random, so the OUI changes on every click. If you need an address that starts with a known three-byte prefix, generate one, keep the last three bytes and replace the first three yourself, then confirm the result still parses.
No. The page only produces text in a field. Changing a real adapter address requires operating system tools, and on many drivers it is not supported at all. Nothing leaves your browser.
Yes, if two interfaces on the same broadcast domain share one address, switches learn the port from both and traffic is delivered unpredictably. Keep a list of the values you generate, because two random draws from a space of 281 trillion are unlikely to collide but a copy-paste mistake between spreadsheet rows is not.