A Universally Unique Identifier — commonly called a UUID — is a 128-bit value used to uniquely identify data across systems, databases, networks, and applications. UUIDs are designed so that the chance of two identical values being generated independently is astronomically small — meaning systems can safely create identifiers without coordination.
A UUID is usually represented as a 36-character string:
Behind the scenes, that string represents 128 bits of data.
UUIDs are widely used in distributed systems, APIs, event logs, database keys, and anywhere uniqueness matters.
At its core, a UUID is:
128 bits long
typically displayed in hexadecimal
split into 5 sections (8-4-4-4-12 format)
designed for global uniqueness without a central authority
Unlike auto-incrementing numeric IDs, UUIDs can be generated:
on different servers
offline
across regions
across databases
…and still be effectively unique.
You’ll often see UUID and GUID used interchangeably — but there’s a small distinction:
| Term | Meaning |
|---|---|
| UUID | Defined by the IETF / RFC 4122 standard |
| GUID | Microsoft’s implementation of UUIDs |
In practice:
A GUID is a type of UUID
The formats and behaviour are nearly identical
The naming difference mainly comes from ecosystem history
So while the terminology differs, for most engineering purposes they refer to the same concept.
UUIDs come in multiple versions — each with a different generation strategy.
Uses timestamp + MAC address
Predictable and can reveal system details
Rarely recommended today
Deterministic: same input → same UUID
Uses MD5 hashing
The most common version
Uses random or pseudo-random numbers
Simple and highly unique
Example:
Like v3 but uses SHA-1
Deterministic and namespace-driven
Based on timestamps but privacy-safe
Sorts better in databases than v4
Increasingly popular in modern systems
Because UUIDs are so large (128 bits), collisions are extremely unlikely.
For UUIDv4:
There are 3.4 × 10³⁸ possible combinations
You would need to generate billions per second for millions of years to expect a collision
The probability is often compared to two random grains of sand on Earth being identical
In practice, UUID collisions are considered negligible outside of malicious or broken implementations.
UUIDs are ideal when you need unique identifiers across systems.
Common examples include:
Primary keys in distributed databases
Identifying users, sessions, or devices
Event IDs in logging systems
API resource identifiers
Object identifiers in microservices
Offline-generated records later synced to a server
They’re especially useful when multiple systems create records independently, without relying on a central counter.
UUIDs are built into most programming languages and tools.
Examples:
Most frameworks also provide helpers or libraries for UUID generation.
UUIDs are 128-bit globally unique identifiers designed for safe, collision-resistant identification across systems — without requiring coordination. While GUIDs are Microsoft’s variant, they function much the same.
Key takeaways:
UUIDs come in multiple versions (v4 is most common, v7 is rising)
Collisions are practically impossible
Ideal for distributed and offline-generated records
Easy to generate in nearly any language