The short answer: yes, same thing
A GUID (Globally Unique Identifier) and a UUID (Universally Unique Identifier) are the same 128-bit identifier, written the same way: 32 hex digits in five groups, 8-4-4-4-12. Microsoft coined GUID in the early 90s for COM objects; the rest of the industry standardized the same format as UUID under the IETF RFC. Same bits. Same uniqueness. Different name.
I used to think there had to be some hidden technical difference, because otherwise why would two names survive for 30 years? Honestly, the answer is just history. Microsoft shipped GUID first, the open-source world shipped UUID, and neither side felt like renaming.
Where the confusion actually comes from
The name is not what trips people up. The packaging is. Microsoft tooling loves two habits the rest of the world dropped: UPPERCASE hex and curly braces. The Registry shows you {6B29FC40-CA47-1067-B31D-00DD010662DA}, your JavaScript library wants 6b29fc40-ca47-1067-b31d-00dd010662da, and if you paste the first into a strict parser, it blows up.
So here is the rule that saves you every time: when copying a GUID out of Windows, strip the braces and lowercase it before doing anything else. That single habit fixes probably 95% of "GUID vs UUID" headaches, and they were never really about GUID vs UUID at all.
Prefer watching? This two-minute video from Eye on Tech puts GUIDs and UUIDs side by side.
The one difference that can actually bite you
There is exactly one real difference, and it only matters when you move raw bytes between Microsoft and non-Microsoft systems. In memory, Microsoft stores the first three fields of a GUID in little-endian byte order, while the RFC standard stores everything big-endian.
Take the ID 00112233-4455-6677-8899-aabbccddeeff. As an RFC UUID, its bytes are exactly what the string suggests: 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff. But a Microsoft API serializing the same logical GUID writes: 33 22 11 00 55 44 77 66 88 99 aa bb cc dd ee ff. Notice the first three groups flipped, and the last eight bytes untouched.
Where does this show up in real life? The classic case: you call Guid.ToByteArray() in .NET, store those bytes, and later parse them with a Python or Java library. Suddenly the ID looks different, even though it is the same value. When I tested this exact round-trip, the first three groups came out byte-swapped, the exact signature of this trap. If you ever see "the same ID" differ only in its first three groups, now you know why. Modern .NET even lets you request big-endian output to avoid it.
A 30-second routine for handling both
Whenever you receive an ID and are not sure which flavor it is, run this routine:
Strip the braces. If the value is wrapped in { }, drop them. Most parsers will not accept them.
Lowercase it. Parsing is technically case-insensitive, but some tools compare strings directly. Lowercase it and move on.
Count the groups. Five groups: 8-4-4-4-12. If it matches, it is a valid GUID and UUID at the same time. Done.
Still suspicious? Sometimes the fastest fix for a mangled ID is to replace it. Our UUID generator creates version 4 IDs in your browser in one click, no server involved, so nothing you generate ever leaves your machine. It sits with our other generator tools, like the random number generator and the password generator.
So which word should you use?
My honest take: say UUID everywhere, unless the code you are touching literally spells it GUID. If the type is System.Guid or the column is uniqueidentifier, use GUID in that code and that documentation. Everywhere else, UUID. It is the universal term, it matches the RFC, and it avoids the Windows-only association.
The two names will keep coexisting for another 30 years. But now the next time you see one, you will know exactly what you are looking at, braces and all.
Frequently asked questions
Is a GUID the same as a UUID?
Yes. A GUID and a UUID are the same 128-bit identifier written the same way. GUID is Microsoft's name for it, UUID is the name used by the RFC standard and everywhere else. The same value works in both worlds.
Why do some GUIDs have curly braces around them?
That is a Windows convention. The Windows Registry, .NET documentation, and many Microsoft tools display GUIDs wrapped in braces like {550e8400-e29b-41d4-a716-446655440000}. Most parsers choke on the braces, so strip them before pasting the value anywhere else.
Can I use a UUID where a GUID is expected?
Yes, as long as you pass it as text. A UUID string dropped into a .NET Guid.Parse or a SQL Server uniqueidentifier column works fine. The only case to watch is raw binary bytes, where Microsoft's mixed-endian layout can reorder the first three fields.
Does a GUID have the same uniqueness as a UUID?
Identical. A GUID from Guid.NewGuid() in .NET is a version 4 UUID with 122 random bits, exactly like a UUID from Python's uuid4(). Same format, same collision odds, same guarantees.
Comments
Loading comments...
Leave a comment