Skip to content

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

a815674f
-
3cc8
-
48b1
-
8c22
-
5fda2faa5023
Time Low

32 bits: Low field of the timestamp

a    8    1    5    6    7    4    f
1010 1000 0001 0101 0110 0111 0100 1111
Time Mid

16 bits: Middle field of the timestamp

3    c    c    8
0011 1100 1100 1000
Time High & Version

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

4    8    b    1
0100 1000 1011 0001
Clock Sequence

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

8    c    2    2
1000 1100 0010 0010
Node

48 bits: Node identifier

5    f    d    a    2    f    a    a    5    0    2    3
0101 1111 1101 1010 0010 1111 1010 1010 0101 0000 0010 0011

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:

  • Time Low (8 hex digits): 550e8400
  • Time Mid (4 hex digits): e29b
  • Time High and Version (4 hex digits): 41d4
    • Version: 4 (first 4 bits / first hex character)
    • Time High: 1d4 (remaining 12 bits / 3 hex characters)
  • Clock Sequence (4 hex digits): a716
    • Variant: First 2 bits of a (binary: 1010, MSB0=1, MSB1=0) - RFC 9562 variant
    • Clock Sequence: 716 (remaining 14 bits)
  • Node (12 hex digits): 446655440000

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
8Implementation dependentCustom 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

  • 60-bit timestamp (100-nanosecond precision, epoch starts 1582-10-15)
  • Includes MAC address (privacy concern)
  • Use: Legacy systems only

v6 - Improved time-based UUID

  • Same timestamp as v1, reordered for better database sortability
  • Still includes MAC address
  • Use: Migrating from v1

v7 - Modern time-based UUID

  • 48-bit Unix timestamp (millisecond precision, epoch starts 1970-01-01)
  • No MAC address (privacy-safe)
  • Excellent database index performance
  • Recommended for new time-ordered applications

Random Version

v4 - Random UUID

  • 122 bits of cryptographically secure random data
  • No time-ordering, no embedded information
  • Default choice for most applications

Name-Based Versions

v3 - MD5 name-based

  • Deterministic: same namespace + name = same UUID
  • Less secure (MD5 vulnerabilities)
  • Use: Legacy only (prefer v5)

v5 - SHA-1 name-based

  • Deterministic: same namespace + name = same UUID
  • Predefined namespaces: DNS, URL, OID, X.500
  • Use: Consistent identifiers from names

v8 - Custom name-based

  • Use modern hash algorithms (SHA-256, SHA-512)
  • Or custom algorithms
  • Use: Modern name-based UUIDs

Legacy Versions

v2 - DCE Security

  • Rarely used in modern applications

Technical Specifications

VersionTimestampAlgorithmRandom Bits
160b (100ns, 1582)Timestamp + MAC0
2DCE Security
3MD5(namespace + name)0
4CSPRNG122
5SHA-1(namespace + name)0
660b (100ns, 1582)Timestamp + MAC (reordered)0
748b Unix (ms, 1970)Timestamp + random74
8CustomImplementation-defined0–122

References