UUID Generator (v4)
crypto.randomUUID() — cryptographically secure, RFC 4122 compliant.00000000-0000-0000-0000-000000000000 — All bits are zero. Used as a sentinel value meaning "no UUID" (e.g., unset foreign key, default value before assignment).
A UUID (Universally Unique Identifier) is a 128-bit label used to uniquely identify objects without central coordination. The standard format is 32 hexadecimal digits in five groups separated by hyphens: 8-4-4-4-12.
UUID v4 is randomly generated using a cryptographically secure random number generator (CSPRNG). Bits 12–15 of the third group are set to 0100 (version 4), and bits 6–7 of the fourth group are set to 10 (variant RFC 4122).
Use cases: Primary keys in databases, distributed system identifiers, idempotency keys for API requests, session tokens (for non-security purposes), file names for uploaded assets.
Mỗi lần tạo user mới, order mới, hay bất kỳ record nào trong database — bạn cần một ID duy nhất. Dùng auto-increment integer? Đơn giản nhưng dễ bị đoán, dễ lộ thông tin nghiệp vụ, và gây đau đầu khi merge nhiều database. Dùng UUID? Ngẫu nhiên, toàn cầu duy nhất, và không ai đoán được số tiếp theo. Tool này tạo UUID cho bạn ngay lập tức — một cái hoặc hàng trăm cái cùng lúc.
UUID là gì?
UUID (Universally Unique Identifier) là định danh 128-bit được thiết kế để duy nhất trên toàn cầu — lý thuyết là không bao giờ có hai UUID giống nhau, dù được tạo ra ở hai máy tính khác nhau vào cùng một thời điểm. UUID được chuẩn hoá bởi RFC 4122 và thường được biểu diễn dưới dạng chuỗi hex 32 ký tự, phân tách bằng dấu gạch ngang theo định dạng:
Ví dụ: 550e8400-e29b-41d4-a716-446655440000
UUID có tổng cộng 2^128 ≈ 340 undecillion giá trị có thể — con số lớn đến mức nếu bạn tạo 1 tỷ UUID mỗi giây trong 100 năm, xác suất trùng vẫn gần như bằng 0.
Các phiên bản UUID
| Phiên bản | Cơ chế tạo | Đặc điểm | Khi nào dùng |
|---|---|---|---|
| UUID v1 | Timestamp + MAC address | Có thứ tự thời gian, lộ MAC address của máy tạo ra | Ít dùng do lo ngại privacy — lộ thông tin máy chủ |
| UUID v3 | MD5 hash của namespace + name | Deterministic — cùng input luôn cho cùng UUID | Tạo UUID nhất quán từ tên cố định (URL, email…) |
| UUID v4 | Hoàn toàn ngẫu nhiên | Phổ biến nhất, không có thông tin nhận dạng, khó đoán | Hầu hết use case: ID record, session token, API key |
| UUID v5 | SHA-1 hash của namespace + name | Deterministic như v3 nhưng dùng SHA-1 an toàn hơn | Thay thế v3 khi cần bảo mật tốt hơn |
| UUID v7 | Unix timestamp + random | Mới nhất — có thứ tự thời gian như v1, an toàn như v4 | Database index, distributed system cần sắp xếp theo thời gian |
Khuyến nghị thực tế: Dùng UUID v4 cho hầu hết trường hợp. Chọn UUID v7 nếu bạn cần UUID có thứ tự thời gian để tối ưu database index (B-tree index hoạt động tốt hơn với giá trị tăng dần).
Cách sử dụng tool
- Bước 1: Chọn phiên bản UUID muốn tạo — mặc định là v4 (phổ biến nhất).
- Bước 2: Nhập số lượng UUID cần tạo — từ 1 đến hàng trăm cái cùng lúc.
- Bước 3: Chọn định dạng: chữ thường (lowercase), chữ hoa (uppercase), hoặc không có dấu gạch ngang.
- Bước 4: Nhấn Generate — copy từng UUID hoặc copy toàn bộ danh sách.
UUID vs các loại ID khác
| Loại ID | Ví dụ | Ưu điểm | Nhược điểm |
|---|---|---|---|
| Auto-increment | 1, 2, 3, 4… | Nhỏ gọn, dễ đọc, index nhanh | Lộ số lượng record, không dùng được khi merge database |
| UUID v4 | 550e8400-e29b-41d4-a716… | Toàn cầu duy nhất, không đoán được, dùng được ở client | Dài (36 ký tự), index kém hơn do random |
| ULID | 01ARZ3NDEKTSV4RRFFQ69G5FAV | Có thứ tự, URL-safe, ngắn hơn UUID | Ít phổ biến hơn UUID |
| NanoID | V1StGXR8_Z5jdHi6B-myT | Ngắn, URL-safe, tùy chỉnh được độ dài | Không có chuẩn chính thức như UUID |
| Snowflake ID | 1541815603606036480 | Có thứ tự thời gian, 64-bit integer hiệu quả | Cần cấu hình worker ID, phức tạp hơn |
Ứng dụng thực tế của UUID
| Use case | Lý do dùng UUID |
|---|---|
| Primary key trong database | Tạo ID ở client trước khi gửi lên server — giúp idempotent request, không cần server trả về ID |
| Session token, API key | Ngẫu nhiên, không đoán được — bảo mật hơn ID tuần tự |
| Tên file upload | Tránh trùng tên file, tránh path traversal attack |
| Correlation ID trong log | Theo dõi một request xuyên suốt nhiều service trong microservices |
| Idempotency key | Đảm bảo request chỉ xử lý một lần dù gửi nhiều lần (payment, order) |
| Merge nhiều database | Không xung đột ID khi gộp dữ liệu từ nhiều nguồn khác nhau |
Dùng UUID trong các ngôn ngữ lập trình
| Ngôn ngữ | Cách tạo UUID v4 |
|---|---|
| JavaScript | crypto.randomUUID() (browser & Node 19+) hoặc thư viện uuid |
| Python | import uuid; str(uuid.uuid4()) |
| PHP | Str::uuid() trong Laravel, hoặc ramsey/uuid library |
| Go | github.com/google/uuid — uuid.New().String() |
| Java | UUID.randomUUID().toString() |
| MySQL | SELECT UUID(); |
| PostgreSQL | SELECT gen_random_uuid(); (PostgreSQL 13+) |
Kết luận
UUID là một trong những khái niệm nền tảng mà developer nào làm việc với database và API đều cần nắm. Đơn giản ở bề mặt — một chuỗi ký tự trông ngẫu nhiên — nhưng đằng sau là thiết kế thông minh giải quyết bài toán định danh trong hệ thống phân tán. Tool này giúp bạn tạo UUID ngay khi cần mà không phải mở terminal hay chạy script.
Khám phá thêm các tool hữu ích tại codetuthub.com/tools.