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)

AspectVersionVariant
PurposeHow the GUID / UUID was generatedHow the GUID / UUID layout should be interpreted
Location3rd group, first hex digit4th group, first hex digit
Typical values1-88, 9, a, b
Changes per GUID / UUID typeYesNo (almost always RFC)
Used by all GUIDs / UUIDsYesYes

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.

Disclaimer: All information is provided for general educational and technical reference only. While we aim to keep the content accurate, current and aligned with published standards. No guarantees are made regarding completeness, correctness or suitability for any specific use case.
GUID / UUID specifications, RFCs, best practices, security guidance, database behavior and ecosystem conventions (including cloud platforms and third-party identifier formats) may change over time or differ by implementation. Examples, recommendations, and comparisons are illustrative and may not apply universally.
This content should not be considered legal, security, compliance or architectural advice. Before making critical design, security, or production decisions, always consult the latest official standards and documentation (such as RFC 4122, RFC 9562 and vendor-specific references).
Always evaluate behavior in your own environment.