Generate Random MAC Addresses in C#
Complete code tutorial with examples and best practices
[ Code Example - Quick Summary ]
Language: C#
What: Generate random MAC addresses in C# using Random and Bogus library. Covers standard format, locally administered addresses, vendor prefixes, and validation for .NET testing.
Try it: Use our interactive Mac-addresses generator or integrate this code into your C# application.
Generate random MAC addresses in C# using Random and Bogus library. Covers standard format, locally administered addresses, vendor prefixes, and validation for .NET testing. Looking for other languages? Check our code examples in PHP , JavaScript , Python , Java , C++ , Ruby and Go or use our interactive web generator.
C# Code Example
using System;
using System.Linq;
using System.Text.RegularExpressions;
public class MacAddressGenerator
{
private static readonly Random random = new Random();
// Generate random MAC address (standard format)
public static string RandomMacAddress()
{
var octets = Enumerable.Range(0, 6)
.Select(_ => random.Next(256).ToString("X2"));
return string.Join(":", octets);
}
// Generate locally administered MAC address (bit 1 of first octet set)
public static string RandomLocalMacAddress()
{
// First octet: set bit 1 (locally administered), clear bit 0 (unicast)
var firstOctet = (random.Next(128) & 0xFE) | 0x02;
var octets = new[] { firstOctet.ToString("X2") }
.Concat(Enumerable.Range(0, 5).Select(_ => random.Next(256).ToString("X2")));
return string.Join(":", octets);
}
// Generate MAC with specific vendor prefix (OUI)
public static string RandomMacWithVendor(string vendorPrefix = "00:1A:2B")
{
var vendor = vendorPrefix.Split(":");
var remaining = Enumerable.Range(0, 6 - vendor.Length)
.Select(_ => random.Next(256).ToString("X2"));
return string.Join(":", vendor.Concat(remaining));
}
// Generate MAC with different separator
public static string RandomMacFormatted(string separator = ":")
{
var octets = Enumerable.Range(0, 6)
.Select(_ => random.Next(256).ToString("X2"));
return string.Join(separator, octets);
}
// Validate MAC address format
public static bool IsValidMacAddress(string mac)
{
var patterns = new[]
{
@"^([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.Any(pattern => Regex.IsMatch(mac, pattern));
}
// Generate multiple MAC addresses
public static string[] GenerateMacAddresses(int count = 10)
{
return Enumerable.Range(0, count)
.Select(_ => RandomMacAddress())
.ToArray();
}
// Using Bogus library (Install-Package Bogus)
// using Bogus;
// var faker = new Faker();
// string mac = faker.Internet.Mac();
// string macDash = faker.Internet.Mac("-");
public static void Main()
{
Console.WriteLine($"Random MAC: {RandomMacAddress()}");
Console.WriteLine($"Local MAC: {RandomLocalMacAddress()}");
Console.WriteLine($"Vendor MAC: {RandomMacWithVendor("00:1A:2B")}");
Console.WriteLine($"Dash format: {RandomMacFormatted("-")}");
Console.WriteLine($"No separator: {RandomMacFormatted("")}");
Console.WriteLine($"Is valid: {IsValidMacAddress("00:1A:2B:3C:4D:5E")}");
Console.WriteLine($"Batch: {string.Join(", ", GenerateMacAddresses(3))}");
}
}
[EXPLANATION]
C# uses Random.Next(256) for generating octets and .ToString("X2") for 2-digit uppercase hexadecimal formatting. LINQ's Enumerable.Range() and Select() provide functional-style generation. string.Join() concatenates with separators. Locally administered MACs use bitwise operations (& 0xFE, | 0x02). Regex.IsMatch() validates patterns. Bogus library offers Internet.Mac() with optional separator for realistic test data in xUnit, NUnit, and MSTest.
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 ASP.NET Core network testing
- Create device identifiers for .NET network simulators
- Populate Entity Framework models with network interface data
- Test MAC validation in network management APIs
- Generate locally administered MACs for Hyper-V virtual machines
Important Notes
-
.ToString("X2")formats as 2-digit uppercase hex with zero-padding -
Bogus supports fluent syntax:
faker.Internet.Mac(separator: "-") - LINQ provides expressive syntax for collection operations
-
Regex.IsMatch()is case-insensitive by default -
For thread-safe generation, create separate
Randominstances per thread
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 JavaScript
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 Ruby
View Mac-addresses generation code examples in Go