Skip to main content
HWID Checker
hwidwindowstutorial

How to Find Your HWID on Windows, macOS and Linux

Use PowerShell, system settings or terminal commands to find MachineGuid, SMBIOS UUID, disk serials and other hardware identifiers on Windows, macOS and Linux.

HWID Checker Β· August 10, 2026 Β· 5 min read

If a game, software vendor or IT administrator asks for your HWID (hardware ID), first confirm which identifier they expect. β€œHWID” may mean a Windows MachineGuid, SMBIOS UUID, disk serial or a vendor-specific composite hash. The methods below show what each command returns instead of pretending there is one universal value.

Method 1 β€” Legacy Command Prompt (older Windows)

On older Windows installations, wmic can display the SMBIOS UUID supplied by the system firmware. On current Windows 11 releases, start with the PowerShell method below instead.

  1. Press Win + R, type cmd, and press Enter.
  2. Paste this command and press Enter:
wmic csproduct get uuid
  1. You'll see a line that looks like 3F2504E0-4F89-41D3-9A0C-0305E82C3301 β€” that is your system's UUID, and for most purposes it is your HWID.

Windows 11 note: wmic was deprecated in Windows 10 21H1 and is disabled by default on a fresh Windows 11 24H2 installation. If the command is unavailable, use the PowerShell CIM command in Method 2.

Method 2 β€” PowerShell CIM (recommended on current Windows)

PowerShell's CIM cmdlets replace wmic and work on every current Windows version.

Get-CimInstance Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID

Other useful one-liners:

# BIOS serial
Get-CimInstance Win32_BIOS | Select-Object -ExpandProperty SerialNumber

# Motherboard serial
Get-CimInstance Win32_BaseBoard | Select-Object -ExpandProperty SerialNumber

# Disk serials
Get-CimInstance Win32_DiskDrive | Select-Object Model, SerialNumber

# The Windows MachineGuid (what most licensing systems call "the HWID")
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Cryptography" | Select-Object -ExpandProperty MachineGuid

Method 3 β€” The registry MachineGuid

The value most Windows licensing systems actually use as "the HWID" is the MachineGuid stored in the registry. You can read it without PowerShell:

  1. Press Win + R, type regedit, press Enter.
  2. Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography.
  3. Look for the MachineGuid value β€” a UUID like a1b2c3d4-....

Or from the command line:

reg query "HKLM\SOFTWARE\Microsoft\Cryptography" /v MachineGuid

Method 4 β€” Device Manager (graphical, no command line)

If you prefer a graphical interface over the command line:

  1. Right-click the Start button and select Device Manager
  2. Expand any hardware category (e.g., Disk drives, Network adapters)
  3. Right-click a device and select Properties
  4. Go to the Details tab
  5. In the Property dropdown, select Hardware Ids

The values shown are the device's hardware identifiers as Windows sees them. These are the same identifiers that drivers use to match devices β€” and the same ones licensing systems can use.

Method 5 β€” macOS and Linux commands

If you are on a Mac or Linux machine, the commands are different but equally simple.

macOS

# Hardware UUID (the primary machine identifier)
system_profiler SPHardwareDataType | grep "Hardware UUID"

# Serial number
system_profiler SPHardwareDataType | grep "Serial Number"

# MAC address
ifconfig en0 | grep ether

Or get all hardware info at once:

system_profiler SPHardwareDataType

Linux

# Machine ID (distribution-level identifier)
cat /etc/machine-id

# Motherboard UUID (requires root)
sudo dmidecode -s system-uuid

# Disk serial numbers
lsblk --nodeps -o NAME,SERIAL

# MAC addresses
ip link show | grep ether

Method 6 β€” Portable Windows report and composite hash

The commands above each return one class of identifier. If you need a single report with the values available through Windows and your firmware, use the portable Windows utility.

Download HWID Checker for Windows β€” an approximately 2.4 MB x64 executable with no installer. Run it from Command Prompt or PowerShell to print the available identifiers and a composite SHA-256 HWID:

hwid-checker.exe -save     # write to a timestamped .txt
hwid-checker.exe -json     # output JSON for scripts

The utility processes the report locally and writes a file only when you use -save. A missing, generic or permission-restricted firmware value may be omitted from the output.

Which identifier do you actually need?

Different systems ask for different things under the name "HWID":

| What they probably want | Where it comes from | How to get it | | --- | --- | --- | | A UUID | SMBIOS UUID | PowerShell CIM command in Method 2 | | The Windows MachineGuid | Registry | Method 3 above | | A composite SHA-256 HWID | A normalized set of available identifiers | Method 6 | | A MAC address | Network adapter | getmac or Get-NetAdapter | | A disk serial | Physical storage device | PowerShell CIM command in Method 2 |

When in doubt, ask which field and format are required. Do not send a full report containing raw serial numbers when the recipient needs only one value.

Reading HWID in your own code

If you are building software that needs to identify a machine, here are minimal examples in three languages. Each one reads a few hardware identifiers and hashes them into a single fingerprint.

Go

package main

import (
	"crypto/sha256"
	"encoding/hex"
	"fmt"
	"os/exec"
	"strings"
)

func main() {
	uuid := powershell("(Get-CimInstance Win32_ComputerSystemProduct).UUID")
	board := powershell("(Get-CimInstance Win32_BaseBoard).SerialNumber")
	disk := powershell("(Get-CimInstance Win32_DiskDrive | ForEach-Object { $_.SerialNumber }) -join ','")

	combined := strings.Join([]string{uuid, board, disk}, "|")
	hash := sha256.Sum256([]byte(combined))
	fmt.Println(hex.EncodeToString(hash[:]))
}

func powershell(command string) string {
	out, _ := exec.Command("powershell", "-NoProfile", "-Command", command).Output()
	return strings.TrimSpace(string(out))
}

C# (.NET)

using System.Management;
using System.Security.Cryptography;
using System.Text;

string cpu = new ManagementObjectSearcher("SELECT ProcessorId FROM Win32_Processor")
    .Get().Cast<ManagementObject>().First()["ProcessorId"].ToString();
string board = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BaseBoard")
    .Get().Cast<ManagementObject>().First()["SerialNumber"].ToString();
string disk = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_DiskDrive")
    .Get().Cast<ManagementObject>().First()["SerialNumber"].ToString();

string combined = $"{cpu}-{board}-{disk}";
byte[] hash = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(combined));
Console.WriteLine(Convert.ToHexString(hash));

Note: System.Management requires the System.Management NuGet package on .NET Core 3.1+ and .NET 5+.

Python

import subprocess, hashlib

def powershell(command):
    result = subprocess.run(
        ["powershell", "-NoProfile", "-Command", command],
        capture_output=True, text=True, check=True
    )
    return result.stdout.strip()

uuid = powershell("(Get-CimInstance Win32_ComputerSystemProduct).UUID")
board = powershell("(Get-CimInstance Win32_BaseBoard).SerialNumber")
disk = powershell("(Get-CimInstance Win32_DiskDrive | % SerialNumber) -join ','")

fingerprint = hashlib.sha256(f"{uuid}|{board}|{disk}".encode()).hexdigest()
print(fingerprint)

A note on the CPU ProcessorId: The value returned by wmic cpu get ProcessorId (or the CPUID instruction) encodes the CPU's vendor, family, model and stepping β€” it is not a unique per-chip serial. Two CPUs of the same model return the same ProcessorId. It is useful as one component of a composite fingerprint, but not sufficient to uniquely identify a machine on its own.

Production systems must also handle generic serials, permissions, virtual machines, normalization and legitimate hardware changes. See the project repository for the Windows CLI source and build instructions.

Want to check an HWID someone sent you?

If you already have an HWID string and want to know what format it is, whether it is valid, or check it against a list, paste it into our online HWID checker. It runs entirely in your browser β€” nothing is uploaded.