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 →Other Programming Languages
View Mac-addresses generation code examples in PHP
View Mac-addresses generation code examples in Python
View Mac-addresses generation code examples in Java
View Mac-addresses generation code examples in C#
View Mac-addresses generation code examples in C++
View Mac-addresses generation code examples in Ruby
View Mac-addresses generation code examples in Go