UUID vs GUID: What's the Difference?
Short answer: there isn't one. UUID and GUID refer to the same 128-bit identifier - the difference is purely in naming history, not technology.
Where each name comes from
UUID (Universally Unique Identifier) is the name used by the official standard - originally defined in the Open Software Foundation's DCE specification, later formalized by the IETF as RFC 4122 and its successor, RFC 9562.
GUID (Globally Unique Identifier) is Microsoft's name for the same format, used throughout Windows, .NET, SQL Server, and COM since the 1990s. Microsoft's GUIDs follow the same 128-bit structure and are, in the vast majority of cases, RFC-compliant UUIDs.
Is there ever a real technical difference?
In modern usage, no - a value generated by Guid.NewGuid() in C# is structurally identical to one from uuid.uuid4() in Python. Both produce a 128-bit value with the same version and variant bits set per the RFC.
| UUID | GUID | |
|---|---|---|
| Defined by | IETF (RFC 4122 / RFC 9562) | Microsoft (historically), follows RFC structure |
| Bit length | 128 bits | 128 bits |
| Common ecosystems | Linux, Java, Python, web standards | .NET, Windows, SQL Server, COM |
| String format | 8-4-4-4-12 hex, lowercase | Same, often shown uppercase or in braces {} |
The one cosmetic difference you'll notice: Windows/.NET tooling traditionally displays GUIDs in uppercase and sometimes wrapped in braces (e.g. {3FA85F64-5717-4562-B3FC-2C963F66AFA6}), while Unix/web tooling favors lowercase with no braces. Both represent the exact same bits.
Which term should you use?
Use whichever term matches your ecosystem's convention - "GUID" in a C#/.NET/SQL Server codebase, "UUID" everywhere else (Java, Python, JavaScript, Linux). Search engines and most developers treat the terms as interchangeable, which is why this site supports both names.
Related
Want the technical breakdown of the standard itself? Read RFC 4122 Explained. Need to generate one in C#? See the C# GUID Generator page.