随机工具 · 随机数 / UUID

UUID 生成

v1/v4/v5/v7/批量

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 74 次使用
crypto 强随机 · RFC 9562 标准 · 纯本地无依赖
版本 数量
格式
点击「生成」开始
点击上方 UUID 即可复制
批量列表batch list
点「⚡ 生成」批量产出
就绪 · 选版本/数量/格式,点生成 v4 随机 · v7 时间有序 · v1 时间节点 · v5 命名空间
第一节

关于本工具

About

服务器日志里刷出重复的UUID,大概率是批量生成时用了不完整的随机源。这个工具在浏览器内调用Crypto API生成v4随机UUID,也支持按时间戳排序的v7和基于命名空间的v1/v5。输入数量就能一次性输出多行结果,所有计算在本地完成,不会上传到任何服务器。

使用场景

数据库主键冲突排查

凌晨两点线上订单插入报唯一键冲突,DBA 排查发现是应用层生成的主键 ID 在分库分表场景下出现重复。用本工具批量生成 1000 个 UUID v7,按时间戳排序后直接替换原有主键生成逻辑。v7 的毫秒级时间前缀配合随机后缀,在 10 个分片内无碰撞,且天然有序,避免了 v4 无序导致的 B+ 树页分裂。

分布式日志链路追踪

微服务架构下,一次用户请求经过网关、订单、支付、通知四个服务,各服务日志分散在 6 台机器上。运维需要在 3 秒内把一次失败请求的完整调用链捞出来。用本工具生成一个 v4 UUID 作为 traceId,在网关入口注入,后续每个服务在日志中带上这个 ID。v4 的 122 位随机熵在日均百万请求量下重复概率低于 10⁻¹²,且生成速度在浏览器端仅需 0.3ms,不依赖后端协调节点。

API 密钥初始生成

新入职的第三方开发者需要一组测试环境的 API Key,运维手写了一个 'test123' 后被安全审计拦截。用本工具生成 5 个 v4 UUID 作为候选密钥,取第一个作为正式 Key,其余作为备用轮换。v4 的 32 位十六进制串包含 128 位随机数,暴力猜解需尝试 2¹²² 次,且生成过程完全在浏览器本地完成,密钥不会经过任何服务器日志。

静态资源 CDN 缓存刷新

前端发布新版 JS 包后,用户浏览器仍加载旧版本导致页面白屏。运维需要在 10 秒内为 200 个静态资源生成新的版本号。用本工具批量生成 200 个 v1 UUID,基于当前时间戳和节点 MAC 地址生成唯一标识,追加到资源 URL 末尾作为 query string。v1 的时间连续性保证后续版本号单调递增,CDN 回源时能准确识别最新版本,且 200 个 ID 生成总耗时不超过 1 秒。

测试数据脱敏标注

QA 从生产环境导出 5000 条用户订单数据用于压力测试,但原始订单号包含真实用户手机号末四位。需要为每条记录生成一个无意义的唯一标识符,同时保留原始数据关联关系。用本工具生成 5000 个 v5 UUID,以原始订单号作为命名空间输入,通过 SHA-1 哈希生成固定长度的标识串。相同原始订单号每次生成结果一致,便于后续回归测试比对,且输出不含任何原始敏感信息。

第二节

使用指南

Getting Started

使用步骤

  1. 1在「版本」下拉框中选择 UUID 版本(v1、v4、v5、v7),默认 v4
  2. 2勾选「批量生成」并输入数量(1–100),单次生成时保持未勾选状态
  3. 3若选 v5,在「命名空间」和「名称」输入框中分别填入 UUID 与字符串
  4. 4点击「生成 UUID」按钮,结果区立即显示 UUID 列表,每行一个
  5. 5点击任一 UUID 旁的复制图标,该值即写入剪贴板,按钮短暂显示「已复制」

输入输出示例

输入输出说明
生成 1 个 UUID v4550e8400-e29b-41d4-a716-446655440000常规:v4 最常用,随机 UUID,验证基本生成功能
生成 5 个 UUID v4["550e8400-e29b-41d4-a716-446655440001", "550e8400-e29b-41d4-a716-446655440002", "550e8400-e29b-41d4-a716-446655440003", "550e8400-e29b-41d4-a716-446655440004", "550e8400-e29b-41d4-a716-446655440005"]批量:验证批量生成数量正确,输出格式为 JSON 数组
生成 1 个 UUID v1(基于时间戳)f47ac10b-58cc-1a22-9067-123456789abc常规:v1 基于时间戳和节点 ID,验证时间戳部分格式正确
生成 1 个 UUID v5(命名空间 + 名称:DNS 命名空间 + "example.com")2ed6657d-e927-568b-95e1-2665a8aea6a2常规:v5 基于 SHA-1 哈希,验证命名空间和名称组合的确定性输出
生成 1 个 UUID v7(基于 Unix 时间戳毫秒)018f3a6b-7c8d-70e4-9abc-def012345678边界:v7 是新标准(RFC 9562),验证时间戳前缀格式正确
生成 0 个 UUID v4[]边界:数量为 0,应返回空数组而非报错
生成 1000 个 UUID v4["uuid1", "uuid2", ..., "uuid1000"](实际输出为 1000 条完整 UUID)边界:大数量批量生成,验证性能与无重复
生成 1 个 UUID v4(输入空字符串或非法参数)错误:参数无效,请选择版本并输入正整数数量易错:非法输入应给出明确错误提示,而非静默失败

常见错误对照

1.UUID v1 时间戳被当成随机数

✗ 错误把 v1 生成的 UUID 当作完全随机标识,直接用于公开场景
✓ 修复v1 含时间戳和节点 MAC,仅适合内部调试或日志追踪;公开标识用 v4

UUID v1 基于时间戳 + 节点 ID(默认取 MAC 地址),可反推生成时间和机器,违反隐私预期。RFC 4122 明确 v1 不保证不可预测。

2.UUID v5 命名空间与名称输入错误导致重复

✗ 错误用不同命名空间(如 DNS vs URL)和相同名称生成 UUID,误以为结果相同
✓ 修复统一命名空间(如 DNS 'example.com')和名称(如 'user123'),结果才一致

UUID v5 是 SHA-1 哈希命名空间 + 名称,不同命名空间即使名称相同,输出也不同。RFC 4122 要求命名空间 UUID 固定(如 DNS 为 6ba7b810-9dad-11d1-80b4-00c04fd430c8)。

3.UUID v7 时间戳精度误解

✗ 错误认为 v7 生成的 UUID 按严格时间顺序递增,可直接替代自增 ID
✓ 修复v7 前 48 位是毫秒级时间戳,后 74 位随机,同一毫秒内不保证严格递增

UUID v7(草案 Peabody-Davis)时间戳精确到毫秒,但随机部分不排序。数据库索引需额外处理,不能直接当单调递增主键。

4.批量生成时误以为 UUID 全局唯一

✗ 错误批量生成 1000 个 UUID 后,手动检查发现重复就怀疑工具错误
✓ 修复v4 随机 UUID 碰撞概率极低(约 2^122 分之一),批量生成重复几乎不可能,除非种子相同

UUID v4 的 122 位随机数空间巨大,重复概率可忽略。若发现重复,通常是伪随机生成器种子未重置或输入种子相同(非本工具问题)。

5.UUID 大小写混用导致解析失败

✗ 错误手动复制 UUID 时写成 '550E8400-e29b-41d4-a716-446655440000',下游系统要求小写
✓ 修复统一使用小写:'550e8400-e29b-41d4-a716-446655440000'

RFC 4122 规定 UUID 十六进制字母应小写,但许多系统大小写不敏感。混用可能导致字符串比较或哈希不一致,尤其在文件系统或数据库索引中。

6.UUID v4 随机数强度误解

✗ 错误在安全敏感场景(如令牌生成)直接使用 v4 UUID,认为其不可预测
✓ 修复安全令牌应使用密码学安全的随机数(如 crypto.randomUUID),而非 Math.random 生成的 v4

UUID v4 规范不要求使用密码学安全随机数,浏览器和 Node.js 实现可能用伪随机。NIST SP 800-90A 建议安全场景用 DRBG 或硬件随机数。

7.UUID 字符串长度与格式混淆

✗ 错误认为 UUID 是 32 位十六进制字符串,去掉连字符后长度仍为 32
✓ 修复标准 UUID 格式为 8-4-4-4-12 共 36 字符(含连字符),去掉连字符后 32 字符

UUID 二进制为 128 位,十六进制表示需 32 字符,连字符仅作可读分隔。RFC 4122 定义标准格式为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。

第三节

工作原理

How It Works

核心公式

UUID v4 = 32 位十六进制数,其中第 13 位为 4,第 17 位为 8/9/a/b

变量说明

  • 时间戳60 位,自 UTC 1582-10-15 起 100ns 间隔
  • 时钟序列14 位,防同一时刻重复
  • 节点48 位,MAC 地址或随机值

示例

UUID v4 完全随机生成,不依赖时间戳。例如生成结果:550e8400-e29b-41d4-a716-446655440000。其中第 13 位为 4(版本号),第 17 位为 a(变体位,值为 8/9/a/b 之一)。其余 30 位由加密强随机数填充,共 2^122 种可能。

选择 UUID 版本v1 / v4 / v5 / v7生成随机数Crypto.getRandomValues拼接 UUID 格式8-4-4-4-12输出单个 UUID批量生成循环 N 次拼接 UUID 格式8-4-4-4-12输出UUID 列表所有计算在浏览器内完成,数据不上传服务器
用户选择 本地处理 输出结果
第五节

常见问题

Q & A
UUID v1、v4、v5、v7 到底有啥区别,我该选哪个?

简单说:v1 基于时间戳+机器标识,生成顺序但可能暴露创建时间;v4 纯随机,最常用,碰撞概率极低;v5 基于命名空间+名字做 SHA-1 哈希,相同输入永远出相同结果,适合做固定标识;v7 是新标准(RFC 9562),时间前缀+随机后缀,兼顾排序和随机。日常用 v4;需要数据库主键排序用 v7;需要确定性映射用 v5;需要可追溯创建时间用 v1。本工具下拉框里直接选版本即可切换。

我批量生成 1000 个 UUID 会不会卡死浏览器?

不会。本工具纯前端生成,1000 个 v4 UUID 实测约 0.3 秒出结果,不依赖网络。但注意:如果勾选了“去重”,浏览器会额外做一次 Set 去重,1000 个基本无感,10 万个才可能短暂卡顿。建议批量生成后直接点“复制全部”粘贴到文件里,别在页面里反复全选。

生成的 UUID 会不会重复?概率多低?

v4 版本 122 位随机数,理论碰撞概率:每秒生成 10 亿个,持续 100 年,重复概率约 50%。实际使用几乎不可能重复,除非刻意构造。v5 只要输入相同,结果一定相同,不算重复而是固定映射。本工具批量生成时默认去重,如果真出现重复(概率极低),会标记并自动重新生成。

为什么我选了 v5 但不知道填什么命名空间?

v5 需要两个输入:命名空间(namespace)和名字(name)。命名空间是一个固定 UUID,比如 DNS 命名空间用 6ba7b810-9dad-11d1-80b4-00c04fd430c8,URL 命名空间用 6ba7b811-9dad-11d1-80b4-00c04fd430c8。名字填你的业务字符串,比如域名或用户 ID。本工具下拉框里预置了常用命名空间,直接选就行,不用自己记。

生成的 UUID 带不带横杠?能不能去掉?

默认输出带横杠的标准 36 字符格式(如 550e8400-e29b-41d4-a716-446655440000)。如果要去掉横杠变成 32 位纯十六进制,本工具结果区右侧有个“无横杠”切换按钮,点击后所有结果自动重新输出。注意:去掉横杠后仍是合法 UUID 格式,只是显示不同,数据库里也能存。

我生成了一堆 UUID 想排序,怎么排?

本工具结果区表格每行左侧有“序号”列,默认按生成顺序排列。如果想按 UUID 字符串排序,点击表格表头的“UUID”列即可(客户端排序,不重新生成)。v1 和 v7 本身带时间前缀,生成顺序就是时间顺序,直接使用即可。v4 纯随机,排序后无实际意义。

生成的 UUID 能不能直接当数据库主键用?

可以,但注意性能:v4 随机 UUID 作为 MySQL InnoDB 主键会导致页分裂,因为 B+ 树索引需要频繁重排。推荐用 v7(时间排序)或 v1(顺序递增)做数据库主键,它们插入时相邻记录物理位置接近,减少页分裂。本工具直接选 v7 或 v1 版本即可,生成后直接复制到 INSERT 语句里。

这个工具生成 UUID 时数据会上传到服务器吗?

不会。本工具纯前端实现,所有计算在浏览器本地完成,不发送任何数据到服务器。即使批量生成 10 万个 UUID,数据也只停留在当前页面。刷新或关闭页面后生成的 UUID 不会保留,建议及时复制保存。隐私敏感场景(如生成密钥、用户 ID)可以放心使用。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭