⭐ 觉得好用?收藏备用,下次直接打开
版本
数量
格式
结果 0
点上方"生成 UUID"按钮开始
解析 / 校验

UUID(通用唯一识别码) 是 128 位的全局唯一标识符,按 RFC 4122 / RFC 9562 标准排成 36 字符的字符串。本工具在浏览器本地生成,不上传也不依赖任何服务,覆盖 v4 / v7 / v1 / v3 / v5 / NIL 六种主流版本,支持批量 1–1000 条、格式定制和 UUID 解析校验。

版本速查

版本生成方式适用场景
v4122 位随机通用 ID、文件名、trace ID(最常用)
v748 位毫秒时间戳 + 74 位随机数据库主键(按时间有序,索引友好)
v1时间 + 节点 ID老系统兼容,浏览器环境节点 ID 是伪 MAC
v3MD5(namespace + name)确定性映射(推荐用 v5 替代)
v5SHA-1(namespace + name)把外部字符串 ID 哈希成本系统 UUID
NIL全零占位符 / “无值”标识

v7 为什么越来越火

PostgreSQL、MySQL 这些关系数据库的主键索引是 B+ 树,v4 完全随机,每次插入落点四处分散,频繁触发页分裂、写放大、缓存命中差。v7 按时间单调递增,新插入永远落在树的最右边,几乎只写最后一页——这就是 ULID / Snowflake / KSUID 早就在做的事,v7 把它纳入 RFC 标准(RFC 9562, 2024)。如果你的表 ID 列还是 v4,迁到 v7 是几乎零成本的写入性能优化。

格式选项的工程含义

  • 去连字符:32 个 hex 字符无连字符版本,节省存储(PostgreSQL uuid 类型仍按 16 字节存,省的只是字符串展示长度)。
  • 大写:.NET / 部分老系统输出大写,与 Java / Python / RFC 标准(小写)拼接前用得上。
  • 花括号 {...}:Windows COM / 注册表 / .NET Guid.ToString("B") 风格。

本地生成

工具完全在浏览器跑(基于 npm 包 uuid v9+),不发起任何网络请求,UUID 不会上传到任何服务器。批量 1000 条在普通笔记本上耗时 <50ms。

📍使用场景

  • 数据库主键插入新行时客户端预先生成 ID,不依赖自增列,分布式表 / 多端写入零冲突。v7 按时间排序,索引页命中比 v4 高。
  • 接口幂等性 key前端发请求前生成 UUID 写到 Idempotency-Key 头,断网重试时后端可识别同一笔操作避免重复扣款 / 重复下单。
  • 文件名 / 临时资源标识上传文件、生成临时链接、埋点 traceId 时拿一个 UUID 当唯一名,碰撞概率可忽略。
  • 测试 mock 数据批量造 100/1000 条带 ID 的 fixture,下载 .txt 直接喂给数据库种子或单元测试。

常见问题

UUID v4 和 v7 怎么选?

给数据库做主键就用 v7,其它场景默认 v4。v4 是纯随机,无序;v7 前 48 位是 Unix 毫秒时间戳,按生成顺序天然递增,B+ 树索引插入时几乎只写最后一页,比 v4 的随机插入页分裂少得多。前端临时 ID、文件名、trace ID 用 v4 就够。

UUID 会不会重复?

实际工程中可以当作不会。v4 有 122 位随机,按生日攻击估算,每秒生成 10 亿个、连生 85 年才有 50% 概率撞一次——常规业务量级远碰不到。v7 因为前 48 位是时间戳,只有同一毫秒内同时生成才有可能撞上后 74 位随机。NIL(全 0)是唯一会主动撞的情况,仅作占位符。

v3 和 v5 是什么?什么时候用?

确定性 UUID:输入"命名空间 + 名称",输出永远是同一个 UUID。v3 用 MD5、v5 用 SHA-1,能用 v5 就用 v5。典型用途:把外部系统的字符串 ID(域名、URL、租户名)映射成本系统主键,同样的输入生成同样的 UUID,免去维护映射表。命名空间用 RFC 4122 预定义的 DNS / URL / OID / X500 即可。

浏览器里生成 v1 安全吗?

比想象中安全。RFC 早期定义 v1 用 MAC 地址当节点 ID,担心泄露设备身份;但浏览器环境拿不到 MAC,uuid 库会用随机字节冒充节点 ID(首字节最低位置 1 表明是"伪 MAC")。剩下的隐私问题是时间戳暴露生成时刻——如果你不想让别人看出 UUID 是几点生成的,别用 v1 / v7,改用 v4。

直接用 crypto.randomUUID() 不就行了吗?

只够用 v4。浏览器原生 crypto.randomUUID() 自 2022 年后全面支持,等价于本工具的 v4 模式。但它只生成 v4,没有 v7(时间序)、v3 / v5(确定性)、v1(基于时间)这些版本。如果只需要 v4 单条生成,浏览器原生就够;批量生成、版本切换、格式定制还是工具方便。

UUID 字符串里的字段是什么意思?

标准 UUID 36 个字符(32 hex + 4 个 -),结构是 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxxM 位是版本号(1/3/4/5/7),N 位的高几位是 variant(标准 RFC 4122 是 10xx,所以 N 范围 8/9/a/b)。其余位的含义随版本不同:v4 全是随机数,v7 前 12 位是毫秒时间戳,v1 是按字段拆出的时间 + 节点 ID。