UUID vs GUID: is there any difference?
Short answer: they are the same thing. GUID is Microsoft's name for a UUID — an identical 128-bit identifier. The differences that actually bite are formatting conventions and one byte-order trap in .NET.
Where the two names came from
UUID (Universally Unique Identifier) comes from the Open Software Foundation's DCE in the early 1990s and is standardized today in RFC 9562. Microsoft adopted the same design for COM in the Windows world and branded it GUID (Globally Unique Identifier). The bits are identical; only the vocabulary differs by ecosystem.
Convention differences (not real differences)
| UUID convention | GUID convention (Microsoft) | |
|---|---|---|
| Case | lowercase canonical (550e8400-…) | often uppercase (550E8400-…) |
| Braces | none | registry/COM style {550E8400-…} |
| Typical home | web APIs, PostgreSQL, Java, Python | .NET, SQL Server, Windows registry |
| SQL type name | uuid (PostgreSQL) | uniqueidentifier (SQL Server) |
Every parser worth using accepts all of these forms — and our generator can output braces or uppercase directly if you need registry-style GUIDs.
The one real difference: .NET byte order
Textually identical, but in raw byte layout Microsoft historically stores the first three fields little-endian. The same identifier 00112233-4455-6677-8899-aabbccddeeff serializes as:
RFC 9562 (network order): 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff
.NET Guid.ToByteArray(): 33 22 11 00 55 44 77 66 88 99 aa bb cc dd ee ff
└─ swapped ─┘└swap┘ └swap┘ └── identical ──┘This bites when you exchange binary UUIDs between .NET and anything else (Java, Python, PostgreSQL bytea). Two fixes:
// .NET 8+ — ask for RFC order explicitly guid.ToByteArray(bigEndian: true); # Python — both layouts are built in uuid.UUID(s).bytes # RFC big-endian uuid.UUID(s).bytes_le # matches .NET's default layout
As strings, none of this matters — which is why the rule of thumb is: exchange UUIDs as strings across ecosystems, or pin down the byte order explicitly.
Which term should you say?
- UUID — standards, web APIs, cross-platform docs, PostgreSQL, Java/Python/Go/JS ecosystems.
- GUID — .NET code (
System.Guid), SQL Server, COM/Windows contexts, where it is the native vocabulary.
Nobody will misunderstand either term. Just don't let anyone tell you they are different formats.
Frequently asked questions
Is a GUID the same as a UUID?
Yes. GUID (Globally Unique Identifier) is Microsoft's name for a UUID (Universally Unique Identifier). Both are the same 128-bit value defined by RFC 9562; any valid GUID is a valid UUID and vice versa.
Can I use a GUID from C# in a system that expects UUIDs?
Yes — as a string, always. As raw bytes, be careful: .NET's Guid.ToByteArray() stores the first three fields in little-endian order, while the RFC byte layout is big-endian. Convert with Guid.ToByteArray(bigEndian: true) on .NET 8+, or reorder the first 8 bytes manually.
Are GUIDs uppercase and UUIDs lowercase?
By convention only. RFC 9562 says lowercase is the canonical output form, but parsers must accept both. Microsoft tooling historically prints uppercase with braces, like {550E8400-E29B-41D4-A716-446655440000} — it is still the same value.
Which term should I use, UUID or GUID?
Use UUID in cross-platform, web, and standards contexts; use GUID when working inside the Microsoft ecosystem (.NET, SQL Server's uniqueidentifier, COM, Windows registry). They are interchangeable in meaning.
Generate either style instantly — lowercase UUIDs or braced uppercase GUIDs — with our free UUID generator. Related: UUID v4 vs v7 · UUID vs ULID