UUID stands for Universally Unique Identifier.
It is a 128-bit number (16 bytes) used to uniquely identify information across space and time without the need for a central authority.
A UUID is usually represented as a 36-character string in hexadecimal format, divided into 5 groups separated by hyphens:
👉 Example:
550e8400-e29b-41d4-a716-446655440000
Here:
550e8400 → 32 bits
e29b → 16 bits
41d4 → 16 bits
a716 → 16 bits
446655440000 → 48 bits
UUIDs are categorized into versions, depending on how they are generated:
UUIDv1 (Time-based)
Generated using timestamp + MAC address of the computer.
Ensures uniqueness but can expose device/network identity.
Example use: Database record IDs.
UUIDv2 (DCE Security)
Rarely used; includes POSIX UID/GID info.
Specific to certain systems.
UUIDv3 (Name-based, MD5 hash)
Deterministic → If you input the same name + namespace, you always get the same UUID.
Uses MD5 hashing.
Example use: Identifying resources based on names (like domain names).
UUIDv4 (Random-based)
Generated randomly (uses cryptographically strong random numbers).
Most widely used because collisions are extremely unlikely.
Example use: Session IDs, API keys, identifiers in distributed systems.
UUIDv5 (Name-based, SHA-1 hash)
Similar to UUIDv3 but uses SHA-1 hashing (more secure than MD5).
Same input → same UUID.
UUIDv6, v7, v8 (Newer proposals in RFCs)
Under discussion in the IETF for improved ordering and modern use cases.
v7: time-ordered and random, better for databases.
✅ Globally Unique
Probability of duplication is practically zero.
Example: Two different machines can generate UUIDs without coordination, and they’ll still be unique.
✅ Decentralized
No need for a central authority (like auto-increment IDs in databases).
Perfect for distributed systems.
✅ Scalable
Multiple applications or services can generate UUIDs independently without risk of collision.
✅ Non-guessable (for v4)
UUIDv4 is random and unpredictable → useful for security tokens.
Databases
Used as primary keys (instead of sequential integers).
Prevents conflicts in distributed databases.
Example: User IDs, transaction IDs.
APIs and Web Applications
Assign identifiers to sessions, requests, or resources.
Example: File uploads → /file/550e8400-e29b-41d4-a716-446655440000
Software Licensing & Activation
Unique license keys for each user or machine.
Cloud & Distributed Systems
Helps uniquely identify entities in large-scale microservices, clusters, and IoT systems.
Document and File Tracking
Identifies documents/files uniquely across systems.
Example: Microsoft Office and Adobe often embed UUIDs inside files.
Blockchain / Tokens
UUIDs are sometimes used for identifying wallets, tokens, or transactions.
import uuid
# Generate UUIDs
print(uuid.uuid1()) # Time-based UUID
print(uuid.uuid3(uuid.NAMESPACE_DNS, 'example.com')) # Name-based MD5
print(uuid.uuid4()) # Random UUID (most common)
print(uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com')) # Name-based SHA-1
Output (example):
f47ac10b-58cc-11cf-a447-001111111111
5df41881-3aed-3515-88a7-2f4a814cf09e
9a56b6d2-2f73-4c0a-a07f-21b9d6b65d6d
2c1d7b54-94c4-59b3-9c41-d7f2637eaa4e
Feature | Auto-Increment ID | UUID |
---|---|---|
Uniqueness | Only within a table | Globally unique |
Predictable | Yes (sequential) | No (v4 random) |
Security | Low (guessable) | High (hard to guess) |
Distributed Systems | Difficult to sync | Perfect fit |
Storage size | Smaller (4-8 bytes) | Larger (16 bytes) |
✨ In short:
UUID is a universal, collision-free, decentralized ID system used widely in databases, APIs, distributed systems, and security-sensitive applications.