Microsoft Global Device ID Explained

What is a Microsoft Global Device ID, you ask? A Global Device Identifier (GDID) is a device-level identifier that uniquely identifies an installation of the Windows operating system on a device. Windows has a GDID that Microsoft can use to identify a device (including virtual devices) and to collect telemetry data. Reinstalling Windows creates a new GDID for that device, but doesn’t erase the old one from Microsoft’s systems, so it can still be used to identify a device.

Microsoft doesn’t publish detailed specifications for the Global Device ID because it’s intended for Microsoft’s cloud infrastructure rather than for end users or application developers. Microsoft needs the Global Device ID for its ecosystem to work properly. Microsoft assigns a GDID to a device so it can be recognized across Microsoft cloud services.

  • Device registration with Microsoft services
  • Device management (such as with Microsoft Intune)
  • Licensing and activation
  • Security features and compliance
  • Diagnostics and telemetry
  • Windows Autopilot
  • Windows Update for Business
  • Conditional Access policies
  • Microsoft 365 device trust

 

The Microsoft Global Device ID is mentioned once briefly on this support page. Users never consent to the GDID and can’t remove it.

Suppose you use a VPN to hide your online activity. The VPN hides your real IP address from websites you visit and your online activity from your ISP. But it does not hide your GDID. Since each Windows installation carries a Global Device ID, it can be used to identify a user against other accounts like Apple, Snapchat, Facebook, and others. That means that using a VPN, proxy, or Tor to keep from being identified is useless if you are using Windows.

Find your own GDID
On a machine signed into a Microsoft Account, one registry key read from your own user hive, no admin needed:

(Get-ItemProperty ‘HKCU:\SOFTWARE\Microsoft\IdentityCRL\ExtendedProperties’).LID
That gives you your device PUID as 16 hex digits (e.g., 0018XXXXXXXXXXXX). To see it in the g:<decimal> form the way it shows up server side:

$hex = (Get-ItemProperty ‘HKCU:\SOFTWARE\Microsoft\IdentityCRL\ExtendedProperties’).LID
“g:$([Convert]::ToUInt64($hex,16))”

HKCU\SOFTWARE\Microsoft\IdentityCRL\ExtendedProperties
LID = 0018XXXXXXXXXXXX

HKCU\SOFTWARE\Microsoft\IdentityCRL\Immersive\production\Token\{…}
DeviceId = 0018XXXXXXXXXXXX