UUID / ULID / Token 标识符指南

UUID、ULID 与随机 Token 是开发者最常用的三类标识符。本页对比它们的格式、长度、是否可排序以及典型适用场景,帮助你在数据库主键、API Key 和会话 ID 之间做出合适选择。

标识符格式长度 / 熵可排序最佳场景
UUID v4xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx122 位随机 + 6 位版本/变体否(完全随机)数据库主键、分布式 ID、隐私场景
UUID v7时间戳(48bit) + 随机(74bit)128 位是(按时间单调递增)需要可排序主键的新系统
ULIDTTTTTTTTTTRRRRRRRRRRRRRRRR(Crockford Base32)48 位时间戳 + 80 位随机是(按生成时间字典序)URL 安全、可排序、人类可读标识符
随机 Token十六进制 / Base64 / Base62 字符串按需(常见 128–256 位)API Key、Session、激活码、邀请码

常见问题

UUID 会重复吗?

UUID v4 的冲突概率极低:理论上需要生成约 10^18 个 122 位随机 UUID 才可能出现一次碰撞,远超常规业务规模。UUID v7 和 ULID additionally 引入时间前缀,同一毫秒内生成的 ID 仍有 80 位随机空间,冲突风险同样可忽略。

UUID v4 和 ULID 该怎么选?

需要可排序、URL 更短、可读性更好 → 选 ULID。需要最广泛兼容、隐私性最强(完全看不出生成时间)→ 选 UUID v4。新项目若数据库主键需要按时间排序,可直接考虑 UUID v7。

Token 应该用什么字符集?

十六进制最简单、最易读;Base64 最短但含 +/= 可能污染 URL;Base62 去掉特殊符号,兼顾长度与 URL 安全;Base58 进一步排除易混淆字符(0/O、I/l),适合手动输入场景。

API Key 用 UUID 还是随机 Token?

API Key 建议用加密安全随机 Token(长度至少 128 位),不要直接用 UUID。UUID 主要设计为唯一标识,虽然熵足够,但专用 Token 在长度、字符集、前缀标识(如 sk_live_xxx)上更灵活,也更容易做权限前缀区分。