GUID / UUID Version vs Variant - What's the difference?
Version and variant are two separate concepts in a GUID / UUID. They are often confused because both are encoded as single hexadecimal digits, but they answer different questions and live in different positions inside the GUID / UUID.
In one sentence: The version tells you how the GUID / UUID was generated, while the variant tells you how to interpret the GUID's / UUID's layout.
Where version and variant live
Canonical format: 8-4-4-4-12
Layout: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
^ ^
| └─ N = Variant
└────── M = Version
The GUID / UUID version is encoded in the first hex digit of the third group. The GUID / UUID variant is encoded in the first hex digit of the fourth group.
GUID / UUID Version
The version defines the generation strategy used to create the GUID / UUID. It answers the question: "Where did this identifier come from?"
GUID / UUID Variant
The variant defines the layout family of the GUID / UUID. It answers the question: "How should the bits of this GUID / UUID be interpreted?"
The variant is independent of the version. Every GUID / UUID version uses a variant, including modern ones like v7 and v8.
Variant nibble (first hex of 4th group):
0xxx → NCS (obsolete)
10xx → RFC 4122 / RFC 9562 (standard)
110x → Microsoft legacy GUID
111x → Reserved for future use
Practical rule: if the first hex digit of the fourth group is 8, 9, a or b, the GUID / UUID uses the standard RFC layout. This is what almost all modern GUIDs / UUIDs use.
Version vs Variant (side by side)
Aspect
Version
Variant
Purpose
How the GUID / UUID was generated
How the GUID / UUID layout should be interpreted
Location
3rd group, first hex digit
4th group, first hex digit
Typical values
1-8
8, 9, a, b
Changes per GUID / UUID type
Yes
No (almost always RFC)
Used by all GUIDs / UUIDs
Yes
Yes
Common misconceptions
"Only some versions have a variant": false - all UUID versions include a variant.
"Variant means version family": false - variant defines layout, not generation method.
"Variant affects uniqueness": false - uniqueness comes from the generation algorithm.
Frequently Asked Questions
The version indicates how the GUID / UUID was generated (e.g., time-based, random, name-based), while the variant defines the layout family that determines how the bits should be interpreted. Version is found in the 3rd group's first hex digit, variant in the 4th group's first hex digit.
Yes, every GUID / UUID has both a version and a variant. The variant is independent of the version and is present in all GUID / UUID types, including modern versions like v7 and v8. Almost all modern GUIDs / UUIDs use the RFC variant (8, 9, a, or b in the 4th group).
Look at the first hexadecimal digit of the third group in the canonical format (8-4-4-4-12). For example, in f47ac10b-58cc-4372-a567-0e02b2c3d479, the version is 4 (random GUID / UUID). The version number ranges from 1 to 8 in modern implementations.
Look at the first hexadecimal digit of the fourth group. If it's 8, 9, a, or b, the GUID / UUID uses the standard RFC variant (10xx in binary). This is the most common variant used in modern systems. Other variants include NCS (0xxx), Microsoft legacy (110x), and reserved (111x).
No, the variant does not affect uniqueness. Uniqueness comes from the generation algorithm (determined by the version) and the random or sequential data in the identifier. The variant only defines how to interpret the bit layout of the GUID / UUID structure.
No, you should never modify an existing GUID / UUID. The version and variant are integral parts of the identifier and changing them would create a completely different identifier. If you need a different version or variant, generate a new GUID / UUID using the appropriate generator.
Different variants evolved from different standardization efforts. The NCS variant came from Apollo Network Computing System, the RFC variant (most common) from IETF standards, the Microsoft variant from legacy Windows systems and reserved variants for future use. Today, the RFC variant (RFC 4122 / RFC 9562) is the standard across all platforms.
Conclusion
Version and variant solve different problems and should always be treated separately. When documenting or validating GUIDs / UUIDs, show both the version to explain behavior and the variant to confirm the standard layout.
Learn more
These articles expand on related concepts, formats and practical considerations.