UUID Là Gì? Giải thích Đầy đủ về Universally Unique Identifiers
Quick Answer
UUID là định danh 128-bit biểu diễn as 36 ký tự (32 chữ hex plus 4 gạch nối). UUID thực tế duy nhất không phối hợp —xác suất collision không đáng kể. UUID v4 (random) là phiên bản phổ biến nhất. Dùng UUID Generator miễn phí.
Introduction
UUID (Universally Unique Identifier), còn gọi GUID (Globally Unique Identifier) trong thuật ngữ Microsoft, là định danh 128-bit thực tế đảm bảo duy nhất không cần phối hợp trung tâm. UUID được định nghĩa bởi RFC 4122 và dùng phổ biến as primary key cơ sở dữ liệu, request ID, session token và định danh hệ thống phân tán. Phiên bản phổ biến nhất là UUID v4, dùng bit ngẫu nhiên.
Step by Step
-
Understand UUID structure
A UUID is 128 bits, displayed as 32 hexadecimal digits in 5 groups: 8-4-4-4-12, separated by hyphens (e.g., 550e8400-e29b-41d4-a716-446655440000). The 13th digit indicates the version (4 for v4), and the 17th digit indicates the variant.
-
Learn the UUID versions
v1: time-based (timestamp + MAC address) — time-ordered but leaks identity. v3: name-based with MD5 hashing. v4: random — most common, no privacy concerns. v5: name-based with SHA-1 hashing. v6 and v7: time-ordered with improved privacy over v1.
-
Understand collision probability
UUID v4 has 2^122 possible values. The probability of a collision among 103 trillion UUIDs is 50%. For practical use (millions of IDs), the collision probability is effectively zero — you can generate UUIDs independently without coordination.
-
Use UUIDs appropriately
Use v4 for almost all use cases (database IDs, request IDs, session tokens). Use v7 if you need time-ordered IDs for database locality. Avoid v1 in security-sensitive contexts — it embeds a timestamp and MAC address.
Examples
UUID v4 (random)
Input: Generated with crypto.getRandomValues
Output: 550e8400-e29b-41d4-a716-446655440000
UUID v1 (time-based)
Input: Timestamp + MAC address
Output: a3bbf0ee-d6e4-11ed-a5b3-3c9703e8b4a1
Nil UUID
Input: All zeros
Output: 00000000-0000-0000-0000-000000000000
Common Problems
- Using Math.random() for UUIDs —it is not cryptographically secure. Use crypto.getRandomValues() or crypto.randomUUID() in browsers.
- Storing UUIDs as strings —a UUID string is 36 bytes; stored as a UUID type (16 bytes) it is more efficient. Use the native UUID type in databases when available.
- Using v1 in security-sensitive contexts —v1 embeds a timestamp and MAC address, which can leak information about when and where it was generated. Use v4 for anonymity.
- Assuming UUIDs are truly unique —they are practically unique (collision probability is negligible), but not mathematically guaranteed unique.
Tips
- Use UUID v4 for almost all use cases —it is random, has no privacy concerns, and is supported by all modern databases.
- Use crypto.randomUUID() in modern browsers for a built-in v4 generator without a library.
- Store UUIDs as UUID/GUID type in databases (16 bytes) instead of strings (36 bytes) for better storage and index performance.
- Use our UUID Generator to create UUIDs instantly in your browser —no signup, fully private.