UUID vs GUID: What's the Difference?
UUID and GUID refer to the same 128-bit identifier format. GUID is Microsoft's term; UUID is the RFC 4122 standard name. There are minor implementation differences, but in practice they're interchangeable.
Advertisement
If you're choosing between 'UUID' and 'GUID' in your database schema or API design, stop worrying — they're the same thing. UUID stands for Universally Unique Identifier (RFC 4122 standard). GUID stands for Globally Unique Identifier (Microsoft's name for the same format). Both describe a 128-bit identifier represented as a 36-character hexadecimal string with the pattern xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Short answer
UUID = GUID. Microsoft calls it GUID; the rest of the world calls it UUID. The data format, collision properties, and use cases are identical.
Are UUID and GUID the Same?
Functionally, yes. UUID (RFC 4122) and Microsoft's GUID format are identical. Both are 128-bit numbers. Both use the same 8-4-4-4-12 hexadecimal format. Both have the same collision properties. A GUID generated by `Guid.NewGuid()` in C# is a valid UUID that any UUID parser in Python, JavaScript, or PostgreSQL will accept without modification.
Where the Terms Come From
GUID (Globally Unique Identifier) comes from Microsoft. Microsoft introduced GUIDs in COM (Component Object Model) in the 1990s for identifying component interfaces. The GUID concept predates the formal RFC 4122 UUID standard, which was published in 2005. Microsoft's GUID implementation was one of the inputs that shaped the RFC 4122 standard.
UUID (Universally Unique Identifier) is the formal name in RFC 4122, published by the IETF in 2005 and based on earlier work from the Open Software Foundation's DCE RPC specification from the early 1990s. The UUID standard defines versions 1–5; newer versions (6 and 7) are defined in a subsequent RFC.
Technical Differences
There is one minor technical difference worth knowing: Microsoft's Guid.NewGuid() generates a version 4 UUID with the standard RFC 4122 format, but internally Microsoft stores GUIDs in a mixed-endian format (partial little-endian for the first three groups). This affects the binary representation when a GUID is stored as raw bytes.
If you store a .NET GUID as BINARY(16) in MySQL and then read it in Python, the byte order may differ from what you expect. Most modern databases have native UUID types that handle this correctly. As long as you're using string representation (the 36-character hyphenated form), byte order differences are irrelevant.
UUID vs GUID Comparison
UUID vs GUID: the key facts
| Property | UUID | GUID |
|---|---|---|
| Full name | Universally Unique Identifier | Globally Unique Identifier |
| Standard | RFC 4122 (IETF) | Microsoft / COM standard |
| Size | 128 bits (16 bytes) | 128 bits (16 bytes) |
| String format | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | Same |
| Primary ecosystem | Linux, Java, Python, Go, all web | .NET, Windows, SQL Server |
| Binary byte order | Big-endian all groups | Mixed-endian (Windows native) |
| Versions (v1–v7) | Defined in RFC | Primarily uses version 4 |
| Interoperability | Fully interoperable with GUID (string form) | Fully interoperable with UUID (string form) |
Advertisement
Which Term to Use in Code
Use the term that matches your technology ecosystem:
- .NET / C# / SQL Server: use 'Guid' — it's the native type name (System.Guid, Guid.NewGuid())
- JavaScript / Python / Go / Java / PostgreSQL / MySQL: use 'UUID' — it's the ecosystem term
- REST API design: use 'id' as the field name, UUID format as the value — no need to specify 'uuid' vs 'guid'
- Database columns: most databases have a 'uuid' type; SQL Server uses 'uniqueidentifier' (which stores GUIDs)
- Cross-system documentation: 'UUID' is the clearer term for international or multi-platform audiences
Generating UUID and GUID
- C#: Guid.NewGuid() — returns a System.Guid (version 4)
- JavaScript: crypto.randomUUID() — returns a string UUID v4
- Python: import uuid; str(uuid.uuid4()) — returns 'xxxxxxxx-...' string
- Java: UUID.randomUUID().toString() — version 4
- PostgreSQL: gen_random_uuid() — version 4
- MySQL: UUID() — version 1 (timestamp-based); use UUID_TO_BIN() for efficient storage
- Online: our free UUID Generator creates version 4 UUIDs in bulk
Generate UUID / GUID Free
Generate UUID v4 identifiers. Copy individually or download a bulk list.
Advertisement
Frequently Asked Questions
Are UUID and GUID the same thing?
Yes, functionally. UUID (Universally Unique Identifier, RFC 4122) and GUID (Globally Unique Identifier, Microsoft) describe the same 128-bit identifier format with identical collision properties. GUID is Microsoft's term; UUID is the cross-platform standard name.
What is the difference between UUID and GUID?
The main difference is naming convention and ecosystem. UUID is the formal IETF standard (RFC 4122) used in most non-Microsoft ecosystems. GUID is Microsoft's term, used in .NET, COM, and SQL Server. The data formats are identical in string form; there's a minor byte-order difference in raw binary storage in Windows.
Is GUID the same as UUID v4?
Guid.NewGuid() in .NET generates a version 4 UUID (confirmed by Microsoft). So yes, a .NET GUID is a UUID v4. The string format is identical and they're fully interoperable.
Which is better: UUID or GUID?
Neither is better — they're the same format. Choose the term that fits your ecosystem. If you're working in .NET or with SQL Server, 'GUID' is the conventional term. For everything else, 'UUID' is standard.
How do I convert a GUID to a UUID?
No conversion is needed. A GUID in string form (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) is valid UUID format. Any UUID parser in any language will accept a .NET GUID string.