Developer Tools for Random Data Generation // v2.6.1
root@generate-random:~/mac-addresses/javascript$ _

Generate Random MAC Addresses in JavaScript

Complete code tutorial with examples and best practices

[ Code Example - Quick Summary ]

Language: JavaScript

What: Generate random MAC addresses in JavaScript for Node.js and frontend applications. Covers standard format, locally administered addresses, vendor prefixes, and validation.

Try it: Use our interactive Mac-addresses generator or integrate this code into your JavaScript application.

Generate random MAC addresses in JavaScript for Node.js and frontend applications. Covers standard format, locally administered addresses, vendor prefixes, and validation. Looking for other languages? Check our code examples in PHP , Python , Java , C# , C++ , Ruby and Go or use our interactive web generator.

JavaScript Code Example

// Generate random MAC address (standard format)
function randomMacAddress() {
    return Array.from({length: 6}, () =>
        Math.floor(Math.random() * 256).toString(16).padStart(2, "0").toUpperCase()
    ).join(":");
}

// Generate locally administered MAC address (bit 1 of first octet set)
function randomLocalMacAddress() {
    const octets = [];
    // First octet: set bit 1 (locally administered), clear bit 0 (unicast)
    const firstOctet = ((Math.floor(Math.random() * 128) & 0xFE) | 0x02);
    octets.push(firstOctet.toString(16).padStart(2, "0").toUpperCase());

    for (let i = 1; i < 6; i++) {
        octets.push(Math.floor(Math.random() * 256).toString(16).padStart(2, "0").toUpperCase());
    }
    return octets.join(":");
}

// Generate MAC with specific vendor prefix (OUI)
function randomMacWithVendor(vendorPrefix = "00:1A:2B") {
    const vendor = vendorPrefix.split(":");
    const octets = [...vendor];

    for (let i = vendor.length; i < 6; i++) {
        octets.push(Math.floor(Math.random() * 256).toString(16).padStart(2, "0").toUpperCase());
    }
    return octets.join(":");
}

// Generate MAC with different separator
function randomMacFormatted(separator = ":") {
    return Array.from({length: 6}, () =>
        Math.floor(Math.random() * 256).toString(16).padStart(2, "0").toUpperCase()
    ).join(separator);
}

// Validate MAC address format
function isValidMacAddress(mac) {
    const patterns = [
        /^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$/,  // 00:1A:2B:3C:4D:5E
        /^([0-9A-Fa-f]{2}-){5}[0-9A-Fa-f]{2}$/,  // 00-1A-2B-3C-4D-5E
        /^[0-9A-Fa-f]{12}$/,                      // 001A2B3C4D5E
    ];

    return patterns.some(pattern => pattern.test(mac));
}

// Generate multiple MAC addresses
function generateMacAddresses(count = 10) {
    return Array.from({length: count}, () => randomMacAddress());
}

// Usage examples
console.log("Random MAC:", randomMacAddress());
console.log("Local MAC:", randomLocalMacAddress());
console.log("Vendor MAC:", randomMacWithVendor("00:1A:2B"));
console.log("Dash format:", randomMacFormatted("-"));
console.log("No separator:", randomMacFormatted(""));
console.log("Is valid:", isValidMacAddress("00:1A:2B:3C:4D:5E"));
console.log("Batch:", generateMacAddresses(3));

[EXPLANATION]

JavaScript's Math.random() generates random values for each octet, toString(16) converts to hexadecimal, and padStart(2, "0") zero-pads to 2 digits. Array.from() creates arrays efficiently. Locally administered MACs have bit 1 set (0x02) and bit 0 cleared in the first octet. Bitwise operations (& 0xFE, | 0x02) manipulate individual bits. Common separators include colon (:), dash (-), and none. Validation uses regex with some() to check multiple patterns.

Expected Output

Random MAC: A3:45:B7:89:CD:EF
Local MAC: 02:45:B7:89:CD:EF
Vendor MAC: 00:1A:2B:89:CD:EF
Dash format: A3-45-B7-89-CD-EF
No separator: A345B789CDEF
Is valid: true
Batch: [ "12:34:56:78:9A:BC", "DE:F0:12:34:56:78", "9A:BC:DE:F0:12:34" ]

Common Use Cases

  • Generate MAC addresses for network simulation in Node.js applications
  • Create test data for frontend network management interfaces
  • Mock MAC addresses in API responses for testing
  • Test MAC validation in network configuration forms
  • Generate device identifiers for IoT testing frameworks

Important Notes

  • toString(16) converts decimal to hexadecimal string
  • Use toUpperCase() for consistent formatting (A-F vs a-f)
  • For Node.js crypto randomness, use crypto.randomBytes()
  • Locally administered MACs (0x02 bit) avoid hardware conflicts
  • padStart() ensures consistent 2-digit format (e.g., "0A" not "A")

Try Our Interactive Generator

Don't want to write code? Use our free web-based Mac-addresses generator with instant results.

TRY MAC-ADDRESSES GENERATOR →