UUID 生成器
在浏览器里生成各个版本的 UUID。随机的 v4,基于时间的 v1,适合排序的 v6、v7,由命名空间和名称派生的 v3、v5,再加上特殊的 NIL 和 MAX,都在同一个面板里完成。可以生成单个,也可以批量生成,能切换大写、去掉连字符或用花括号包裹,每一行都能一键复制。全部在本地计算,任何标识符都不会发送到服务器。
- 一处覆盖所有版本:v1、v3、v4、v5、v6、v7,以及 NIL 和 MAX 两个特殊值
- 基于名称的 v3、v5 支持标准的 DNS、URL、OID、X.500 命名空间,也支持自定义
- 批量生成,逐行点击复制、一键全部复制,并可下载为纯文本
- 输出格式可切换大写、去连字符和花括号包裹
- 全部在浏览器本地生成,标识符不会离开你的设备
随机生成,含 122 位随机数,是通用场景最常用的版本。
功能简介
把所有 UUID 版本集中到一个面板,让你按需求选对类型、按需要的数量生成,并格式化成贴合代码库的样式,不必再去拼脚本或敲命令。
- 01
随机版本:v4、v1、v6、v7
生成带随机性或时间信息的版本。v4 完全随机,v1 基于时间,v6 和 v7 更适合按生成时间排序,对数据库写入的局部性更好。
- 02
基于名称的版本:v3 与 v5
从命名空间和名称派生出稳定的 UUID。相同的命名空间和名称始终得到相同结果,适合需要确定性标识符的场景。
- 03
标准命名空间与自定义
可选用预置的 DNS、URL、OID、X.500 命名空间,也可以粘贴任意合法 UUID 作为自定义命名空间,套用自己的方案。
- 04
单个或批量
既能生成单个 UUID,也能一次生成多达一千个,并为常用数量提供快捷预设,方便批量准备测试数据。
- 05
输出格式
可切换为大写、去掉连字符做紧凑存储,或用花括号包裹每个值,贴合注册表风格的标识符。
- 06
复制与导出
可一键复制单行、复制整批,或把列表下载为纯文本文件,供脚本和测试数据集使用。
如何使用
从选版本到拿到可直接复制的列表只需几步,无论你要一个标识符还是一批测试数据。
- 01
先选 UUID 版本。通用随机 ID 用 v4;想要按创建时间排序的主键就用 v7。
- 02
生成 v3 或 v5 时,选一个命名空间并输入名称,或粘贴你自己的自定义命名空间 UUID。
- 03
生成随机版本时,设置需要的数量,或点一个数量预设快速批量生成。
- 04
按需调整格式:大写、去连字符或用花括号包裹。
- 05
复制单行、复制整批,或下载为文本文件,供脚本和测试使用。
功能说明
UUID 出现在数据库、消息队列、分布式系统和测试数据集中,不同场景需要不同的版本和格式。
- 覆盖完整的 UUID 家族:v1、v3、v4、v5、v6、v7,以及 NIL 和 MAX 两个特殊值
- 基于名称的 v3、v5 接受标准的 DNS、URL、OID、X.500 命名空间或任意自定义 UUID
- v7 生成按时间大致有序的主键,让 B 树数据库索引保持较高的写入局部性
- v6 对 v1 字段重排,让较早的标识符排在较新之前,同时保留时间戳信息
- 批量生成一次可产出多达一千个值,用于填充数据库和压力测试
- 逐行复制、全部复制和文本下载,兼顾一次性需求和批量测试数据
- 大写、去连字符和花括号包裹格式,分别贴合不同的存储和平台约定
- 非法的自定义命名空间会在生成前被拦下,确保 v3、v5 始终产出合法结果
- 这里的基于时间版本使用随机节点标识,不会暴露真实硬件地址;基于名称的版本按标准哈希生成
- 全部生成都在浏览器内完成,内部系统的标识符不会上传到任何服务器
适合哪些场景
选哪个 UUID 版本,一半是设计取舍,一半是约定,而同一个工具要同时服务数据库主键、确定性标识和快速测试数据。
-
主键与数据库行
随机的 v4 主键能在多个服务间避免冲突;v7 则让新行在索引里彼此靠近,写入和范围扫描更快。
-
可排序的时间有序标识
当记录需要按创建顺序大致排列时,v7 和 v6 带有时间信息,让标识符保持较好的时间局部性;精确排序仍应保留时间列。
-
从内容派生的确定性 ID
v5 能把命名空间和一个稳定的名称(比如 URL 或文件路径)每次都转成相同的 UUID,适合幂等导入和缓存。
-
关联与追踪 ID
为每个请求或消息分配一个 v4 UUID,让日志、队列和链路追踪有唯一句柄,跨服务跟踪同一份工作。
-
测试数据与夹具
批量生成可为数据库、模拟接口和快照测试填充逼真的标识符,无需手写生成脚本。
-
API 资源与幂等键
客户端可在请求上带一个 UUID,让重试只被处理一次;资源也能获得稳定、可安全对外暴露的公开标识。
-
文件名与对象存储键
去连字符的 UUID 是紧凑且抗冲突的名称,适合用作上传、导出和共享存储上的对象键,避免命名撞车。
-
占位与重置值
NIL UUID 是清晰的空值,适合可选外键和默认列;MAX 则可作为范围判断里的上界。
使用建议
UUID 很容易生成,但选对版本、用对方式,才能让系统保持高效、可控,又不泄露信息。
- 通用标识符默认用 v4;当主键需要按创建时间排序时再选 v7。
- 高写入量的数据库主键优先用 v7 而非 v4,按时间大致有序能让索引写入保持局部性,减少碎片。
- 新的基于名称的标识优先用 v5 而非 v3,因为规范更推荐 SHA-1 而非 MD5。
- 把 UUID 当作标识符而非机密,不要用作会话令牌、密码重置等需要不可猜测的用途。
- 数据库支持时用原生 UUID 或二进制列存储,而不是 36 个字符的字符串,以节省空间、加快比较。
- 存储中保持一种规范格式,通常是小写带连字符,只在确实需要的边界处再转成大写或去连字符。
- 记住 v1、v6 内嵌时间戳,v3、v5 由输入派生,因此它们本质上既不随机也不私密。
- 对确定性的 v3、v5,记录确切的命名空间和名称,以便日后复现同一个标识符。
边界与注意事项
UUID 解决的是标识问题而非安全问题,不同版本的保证差别很大,了解它们承诺什么、不承诺什么很重要。
- UUID 不是机密。v1、v6 暴露时间戳,v3、v5 可由输入复现,因此都不应用来控制访问权限。
- 随机和基于时间的版本几乎必然唯一,但并非数学上绝对唯一,因此唯一约束仍应放在数据库里。
- 这里的基于时间版本使用随机节点而非真实网络地址,无法用于识别某台物理机器。
- 基于名称的 v3、v5 是确定性的,用相同命名空间和名称生成多个,只会重复同一个值。
- 本工具负责生成并格式化 UUID,不解析、不校验、也不解码你粘贴进来的 UUID。
- 可排序的 v6、v7 大致按时间排序,但当需要精确顺序时,它们不能替代专门的时间戳列。
- 不同平台期望的格式不同,存储前请确认目标需要小写、大写、连字符还是花括号。
常见问题
关于跨版本生成 UUID 的常见问题,涵盖该选哪个版本、基于名称的值如何工作、格式,以及 UUID 能保证和不能保证什么。
我该用哪个 UUID 版本?
通用随机标识用 v4;想要按创建时间排序的数据库主键用 v7;需要相同输入每次都得到相同标识时用 v5。
v4 和 v7 有什么区别?
v4 完全随机、没有顺序。v7 把 Unix 时间戳放在高位、随机位放在其余部分,因此大致按创建时间排序,对数据库索引局部性更好。
基于名称的 v3、v5 如何工作?
它们把命名空间 UUID 和名称一起做哈希,v3 用 MD5,v5 用 SHA-1。相同的命名空间和名称始终得到相同的 UUID,因此结果是确定的。
什么时候用 v3 而不是 v5?
新项目优先用 v5,因为规范更推荐 SHA-1 而非 MD5。v3 主要用于和已经在生成 v3 的现有系统保持兼容。
这些 UUID 适合当作机密令牌吗?
不适合。UUID 是标识符而非机密。v1、v6 暴露时间戳,v3、v5 可由输入复现。需要不可猜测的令牌请改用专门的随机密钥。
v1、v6 会泄露我的 MAC 地址吗?
不会。这里的基于时间版本使用随机生成的节点标识,而非真实硬件地址,因此不会泄露你机器的信息。
两个生成的 UUID 会不会冲突?
随机和基于时间的版本发生冲突的概率极低,但并非数学上不可能,因此关键主键仍应在数据库里保留唯一约束。
NIL 和 MAX UUID 有什么用?
NIL 全为零,可作为明确的空值或占位值。MAX 全为一,由 RFC 9562 定义,适合在比较和范围判断中作为上界。
UUID 存储时该带还是不带连字符?
存储中保持一种规范格式,通常是小写带连字符。只在文件名或要求特定格式的平台等边界,才使用去连字符或大写的变体。
我生成的 UUID 会被发送到别处吗?
不会。每个值都在浏览器本地生成,内部系统的标识符和测试数据都不会离开你的设备。
更多相关工具
UUID 只是众多标识符中的一种。需要更短或自定义格式时配合更通用的 ID 生成器,想查看基于名称 UUID 背后的摘要时配合哈希工具一起使用。