Understanding UUIDs

Published · Updated · 2 min read

A UUID (Universally Unique Identifier) is a 128-bit identifier used to uniquely identify resources across distributed systems.

UUID Structure

UUIDs are represented as 32 hexadecimal digits in five hyphen-separated groups following the 8-4-4-4-12 format, totaling 36 characters.

Version: v4
Variant: RFC 9562
Info: Uses cryptographically secure random numbers.

UUID Structure

10dd38ea
-
917c
-
4cbe
-
a7db
-
25022869f84b
Time Low

32 bits: Low field of the timestamp

1    0    d    d    3    8    e    a
0001 0000 1101 1101 0011 1000 1110 1010
Time Mid

16 bits: Middle field of the timestamp

9    1    7    c
1001 0001 0111 1100
Time High & Version

16 bits: 4 bits version + 12 bits high field of timestamp

4    c    b    e
0100 1100 1011 1110
Clock Sequence

16 bits: 2 bits variant + 14 bits clock sequence to help avoid duplicates

a    7    d    b
1010 0111 1101 1011
Node

48 bits: Node identifier

2    5    0    2    2    8    6    9    f    8    4    b
0010 0101 0000 0010 0010 1000 0110 1001 1111 1000 0100 1011

Example UUID

550e8400-e29b-41d4-a716-446655440000
              ↑    ↑
              │    └─ Variant bits (first 2 bits of clock sequence)
              └────── Version (first 4 bits of time high)

Breaking it down:

Understanding Variant Bits

The variant uses the first 2 bits (MSB0, MSB1) of the clock sequence field:

BitsHexVariantDescription
0xxx0-7NCS ReservedNetwork Computing System (NCS) backward compatibility, includes Nil UUID
10xx8-9, A-BRFC 9562The variant specified in this document (most common)
110xC-DMicrosoft ReservedMicrosoft Corporation backward compatibility
111xE-FFuture ReservedReserved for future definition, includes Max UUID

UUID Versions

At a Glance

VersionTime-OrderedDeterministicPrivacy-SafeDB PerformanceRecommendation
4Default choice
5✓ SHA-1Name mapping
6✓ Gregorian (1582)✗ MAC addressv1 migration
7✓ Unix (1970)⚠ Timing exposure✓✓Recommended if timing exposure is acceptable
8Up to implementationCustom use
Legacy versions
1✓ Gregorian (1582)✗ MAC addressLegacy (use v6)
2Legacy DCE
3✓ MD5Legacy (use v5)

Legend: ✓ = Yes | ✗ = No | ⚠ = Depends/Varies

Time-Based Versions

v1 - Original time-based UUID

v6 - Improved time-based UUID

v7 - Modern time-based UUID

Random Version

v4 - Random UUID

Name-Based Versions

v3 - MD5 name-based

v5 - SHA-1 name-based

v8 - Custom name-based

Legacy Versions

v2 - DCE Security

Technical Specifications

VersionTimestampAlgorithmRandom Bits
v160b (100ns, 1582)Timestamp + MAC0
v2DCE Security
v3MD5(namespace + name)0
v4CSPRNG122
v5SHA-1(namespace + name)0
v660b (100ns, 1582)Timestamp + MAC (reordered)0
v748b Unix (ms, 1970)Timestamp + random74
v8CustomImplementation-defined0–122

References