UUID生成器|批量生成v4,支持无连字符/大写格式
在浏览器中批量生成任意数量的UUID v4(随机)标识符。一键切换标准、大写、无连字符、大括号、URN等格式,方便直接复制使用。免费无需注册。
UUID版本一览
| 版本 | 生成方式 | 说明 |
|---|---|---|
| UUID v1 | 时间戳 + MAC地址 | 基于生成时间和网卡MAC地址生成。由于可能暴露生成设备信息而存在隐私隐患,目前新系统很少采用。 |
| UUID v3 | 命名空间 + MD5哈希 | 对命名空间和名称字符串进行MD5哈希后生成。具有确定性——相同输入始终得到相同UUID。由于MD5存在碰撞弱点,新用途推荐使用v5。 |
| UUID v4 | 完全随机 | 基于密码学安全的随机数生成。不包含来源信息,隐私性好且实现简单,是目前使用最广泛的版本。本工具生成的即为此格式。 |
| UUID v5 | 命名空间 + SHA-1哈希 | 与v3同样采用命名空间方式,但使用SHA-1。适用于需要确定性生成(相同数据始终得到相同ID)的场景。 |
| UUID v6 | 重排时间戳 + 随机数 | 2024年由RFC 9562标准化。重新排列了v1的时间戳字段,使字节序的字典顺序与时间顺序一致,从而提升数据库索引效率。 |
| UUID v7 | Unix时间戳 + 随机数 | 2024年由RFC 9562标准化。开头为毫秒精度的Unix时间戳,因此可按生成顺序排序。在新项目中作为v4的替代方案正被越来越多地采用。 |
什么是 UUID 生成
UUID(Universally Unique Identifier)是用于数据库主键、API 请求 ID 等场合,以在全球范围内不重复为目的的128位标识符。其特点在于无需由中央服务器管理连号,各终端与服务器只要各自独立发行即可,在实用上不会发生冲突。
本工具使用 Web Crypto API 在浏览器内生成 UUID v4(完全随机)。生成处理不会发送至服务器,可按指定件数一次性生成,并可一键转换为标准格式、无连字符、大写、带花括号、URN 形式后复制。
UUID 生成的使用方法
- 指定生成件数 输入所需的个数。若要为测试数据或种子数据一次性生成,可指定较多的件数。
- 选择显示格式 除标准(小写、连字符分隔)之外,还可从无连字符、大写、带花括号、URN 形式中选择契合用途的格式。
- 生成并复制 按下“生成”后结果会以列表显示。可用“全部复制”或各行的“复制”按钮粘贴到剪贴板。
用好本工具的小技巧
- 生成的UUID完全在浏览器内通过Web Crypto API处理,不会发送到toolbase.cc的服务器。
- 当需要唯一性但不想使用连续、可猜测的ID时(如数据库主键、API请求ID等),UUID v4是广泛使用的选择。
- UUID v4的128位中有122位是随机的,因此发生碰撞的概率极低(即使生成10亿个,碰撞概率达到约50%也需要约2.7×10¹⁸个)。
- "无连字符"格式便于用作URL路径段或文件名。"带大括号"格式与Windows COM/注册表中使用的GUID表示法相同。
- 增加生成数量后使用"复制全部",可以方便地批量创建测试数据或种子数据。
UUID 生成派上用场的场景
数据库主键设计
对于不希望使用连号、不希望被推测出生成来源的表,可将无需担心重复的 UUID v4 用作主键。
API 的请求 ID、追踪 ID
为便于日志排查与调试而为每个请求赋予唯一 ID 时,可一次性生成所需的件数。
测试用数据、种子数据的制作
向开发环境注入初始数据时,可按件数一次性生成不重复的 ID 序列,直接复制使用。
文件名、临时令牌的生成
可将“无连字符”形式的 UUID 用作上传文件的临时名称,或用作不易被推测的临时令牌。
术语集
- UUID v4
- 由密码学伪随机数生成、不含生成来源信息的 UUID。实现简单且在隐私方面安全,因此使用最为广泛。
- GUID
- 微软在自家实现中使用的 UUID 别名。指与 UUID 兼容的128位标识符,多以带花括号的形式表记。
- Web Crypto API
- 浏览器标准内置的加密相关 JavaScript API 群。本工具使用该 API 仅在浏览器内生成 UUID v4,不会发送至服务器。
- URN 形式
- 加上
urn:uuid:前缀的 UUID 表记形式。在 XML、RDF 等要求 URN(统一资源名称)的规范中,将 UUID 作为标识符嵌入时使用。 - UUID v7
- 2024年由 RFC 9562 标准化、开头带有 Unix 时间戳的 UUID。因可按生成顺序排序,在要求数据库插入效率的新开发中,作为 v4 的替代方案正逐渐普及。
常见问题
{xxxxxxxx-xxxx-...}是Windows COM/注册表中常见的GUID写法。
闲话 ― 为什么要用128位
UUID(通用唯一标识符)由Apollo Computer公司在1980年代为分布式系统而设计,后来由OSF(开放软件基金会)作为DCE(分布式计算环境)的一部分进行标准化。目前的规范见于IETF RFC 4122(2005年),2024年又发布了扩展版RFC 9562。
128位看似过多,但这个长度是为了保证多台服务器、设备完全不互相通信、各自独立发行ID时,在实际使用中也不会发生碰撞。若采用中央ID发行服务器统一管理连号,该服务器会成为单点故障,且每次发行都需要一次通信开销。UUID用足够长的随机性把碰撞概率降到可忽略的水平,从而彻底消除了这种协调成本。
但UUID v4正因为是随机的,插入数据库的B-Tree类索引时会导致插入位置分散,频繁引发页分裂,从而影响性能。为解决这个问题而设计出的可按时间顺序排序的UUID v7,通过在开头携带Unix时间戳,在保持随机性的同时确保了插入局部性。