Tạo UUID
Tạo UUID v4, v7, v1 trong trình duyệt. v7 sortable khuyến nghị cho database key.
UUID Generator
Sortable by time, recommended for new database keys.
Validate a UUID
Runs entirely in your browser. Your input never leaves your device.
What next?
How it works
UUID thực ra là gì
UUID là số 128 bit, với xác suất cực cao là duy nhất toàn cầu mà không cần coordinate. Bạn tạo trên laptop ngay bây giờ và có niềm tin cỡ sai số làm tròn rằng không máy nào trên trái đất từng tạo ra cùng giá trị. Format (RFC 4122, update bởi RFC 9562) là 32 chữ số hex chia thành 5 nhóm bằng dấu nối: 8-4-4-4-12.
Format không thay đổi giữa các version. Cái thay đổi là cách các bit được tạo, có hệ quả thật cho hiệu năng database, khả năng sort, và quyền riêng tư.
v4 — random
Cổ điển. 122 bit randomness mã hóa, 6 bit dành để chỉ "đây là v4". Hỗ trợ phổ quát, dễ tạo, mặc định tốt cho ID opaque.
Nhược: random ID rất tệ cho B-tree index locality. Insert UUID random vào database dùng nó làm primary key gây phân mảnh index, làm chậm insert khi bảng to lên. Bảng nhỏ (dưới 1M dòng) sẽ không nhận ra. Quy mô lớn sẽ thấy.
v7 — thứ tự thời gian
Version mới (2024) giải bài toán locality của v4. 48 bit đầu là timestamp Unix mili giây, sau là 74 bit random. Kết quả: thứ tự sort lexicographic khớp thứ tự insert, B-tree giữ chặt, vẫn unique hiệu quả.
Mặc định v7 cho database key mới năm 2026 trừ khi có lý do cụ thể không. Postgres hỗ trợ native từ phiên bản 17; library hầu hết ngôn ngữ đã có.
v1 — timestamp + MAC
Legacy. Kết hợp timestamp với MAC address máy host. Sortable theo thời gian (tốt cho index) nhưng lộ MAC của generator (xấu cho privacy — lịch sử bị dùng tấn công attribution). Dùng v7 thay — cùng sortability, không lộ MAC.
v3, v5 — dựa trên tên
v3 (MD5) và v5 (SHA-1) hash namespace + name thành UUID. Hữu ích khi muốn cùng input deterministically cho cùng UUID trên các hệ thống. Ít gặp trong code app; xuất hiện ở DNS, OID, fingerprint chứng chỉ.
Hiệu năng: UUID làm primary key
Hai luận điểm thường gặp:
| Mối quan tâm | Phán xét | |---|---| | Dung lượng | UUID = 16 byte vs bigint 8 byte. Index ~2× lớn hơn. Đĩa rẻ. | | Tốc độ insert (v4) | Xấu cho B-tree với ID random ở quy mô lớn. Dùng v7 để fix. | | Tốc độ insert (v7) | Bằng auto-increment cho insert tuần tự thời gian. | | Khả năng sort | v7 sort theo thời gian. v4 không. | | Unique cross-shard | UUID thắng — không cần coordinate. | | Dễ debug | ID auto-increment dễ gõ trong URL hơn. |
Đáp án đúng cho hầu hết schema app mới năm 2026: v7 UUID cho ID hiển thị app, auto-increment bigint cho bảng join nội bộ.
UUID vs ULID vs CUID2
- ULID — cùng ý tưởng sortable-by-time, encode 26 ký tự Crockford Base32. Sạch hơn UUID khi gõ, nhưng không chuẩn (không có RFC), nên hỗ trợ library + DB hẹp hơn. UUID v7 thay thế hầu hết use case ULID.
- CUID2 — ID collision-resistant nhấn mạnh scale horizontal và chống enumerate. Mục tiêu thiết kế khác; chọn nếu cần cụ thể tính chất cuid2.
Với 99% trường hợp "cho tôi ID unique", UUID v7 với library chuẩn.
Dùng trong tool này
- Chọn version (v7, v4, v1).
- Đặt count (1–100).
- Toggle uppercase hoặc dashes nếu hệ thống downstream có ý kiến.
- Generate, copy all.
Mode validate parse UUID bất kỳ và cho biết version + variant — hữu ích khi đang nhìn ID và tự hỏi nó từ đâu.
Quyền riêng tư
Tạo hoàn toàn trong browser qua package mã nguồn mở uuid dùng crypto.getRandomValues cho randomness. Không value nào được log hay truyền.
Công cụ liên quan
- Hash Generator — hash UUID cho ID kích thước cố định ngắn hơn.
- Password Generator — khi cần chuỗi random mạnh, không phải ID có cấu trúc.
FAQ
Nên dùng UUID version nào?
Cho primary key ứng dụng mới năm 2026: v7. Sortable theo thời gian tạo, thân thiện B-tree index, không lộ MAC address. Quay về v4 nếu stack chưa hỗ trợ v7.
UUID có thật sự unique không?
Thực tế là có. v4 có 122 bit entropy — để có 50% xác suất xảy ra bất kỳ collision nào, cần ~2.7 quintillion (10^18) ID. Phần random của v7 có 74 bit, vẫn ở mức "không bao giờ collide" cho mọi ứng dụng dưới quy mô hành tinh.
Có thể dùng UUID làm database primary key không?
Có. Cảnh báo hiệu năng lịch sử áp dụng cụ thể cho v4 ở bảng lớn với workload insert random. Dùng v7 để tránh. Chi phí lưu trữ 16 byte vs 8 cho bigint — không đáng cho bảng app, đáng nghĩ cho bảng tỷ dòng.
v7 hay ULID?
v7 trừ khi cần cụ thể shape encoding của ULID. ULID có trước UUID v7 và phổ biến phần vì v7 chưa tồn tại. Giờ v7 đã chuẩn, ULID có hỗ trợ library + database hẹp hơn và không lợi thế spec.
Randomness trong tool này có mã hóa không?
Có. Library uuid underlying dùng crypto.getRandomValues, CSPRNG của browser. Phù hợp cho token bảo mật, session ID, v.v.
Vì sao v1 lộ MAC address?
v1 thiết kế thời mà MAC của host là nguồn unique dễ. Library hiện đại thường randomize node ID để tránh leak, nhưng ý định thiết kế bao gồm xác định máy tạo. Đừng dùng v1 ở context nhạy cảm privacy — dùng v7.
Tạo hàng triệu trong tool này được không?
Field Count giới hạn ở 100. Tạo hàng triệu trong tab browser là rủi ro bộ nhớ; quy mô đó dùng CLI như uuidgen trong vòng lặp hoặc code ứng dụng.