UUID 生成器
简介
Toollect UUID 生成器是一款基于浏览器的工具,可生成所有八种标准版本的通用唯一识别码(UUID,也称为 GUID)——v1 至 v8。无论你需要随机识别码用于网页表单、时间排序键用于数据库记录、确定性命名空间 ID 用于分布式系统,还是自定义格式 UUID 用于旧版集成,此工具都能完整覆盖,无需安装任何软件或服务器端处理。
UUID 是软件工程中最广泛采用的识别码标准之一,应用范围从数据库主键、API 资源识别码到分布式追踪和会话令牌。Toollect UUID 生成器将所有 UUID 版本集成到单一界面,让你选择适合的变体并一键即时生成。
所有生成完全在浏览器中使用 Web Crypto API 执行。无数据通过网络传输,不设置 Cookie,不记录任何识别码。工具在初始页面加载后可离线运行,并兼容所有现代浏览器和设备。
使用场景
不同的 UUID 版本服务于不同的架构需求。选择正确的版本取决于你对排序、确定性、隐私性和系统协调的要求。
数据库主键
UUID 消除了在分布式数据库实例间生成主键时对中央序列号的需求。UUID v4 是最简单的即选方案,但 UUID v6 和 v7 提供时间排序,可显著减少 PostgreSQL 和 MySQL 等数据库中 B-tree 索引的碎片化。对于需要全局唯一性和快速写入性能的系统,v7 已成为现代推荐选择。
分布式系统识别码
微服务和分布式系统通常在不同节点上独立生成识别码。UUID v1 包含节点识别码(衍生自 MAC 地址)和时钟序列,使每个生成节点的 ID 无需协调即内置唯一性。UUID v4 和 v7 因其简单性在此场景也很受欢迎。
确定性名称型 ID
当相同输入应始终生成相同 UUID 时——例如从用户电子邮件、资源 URL 或命名空间限定名称生成稳定识别码——UUID v3(MD5 基础)和 v5(SHA-1 基础)提供确定性。这适用于内容可寻址存储、事件溯源中的实体识别,以及在迁移旧版数据时不更改识别码。
API 资源识别码
在 API URL 中暴露自动递增整数会泄漏资源数量和排序信息。UUID 提供不透明识别码,不透露系统内部信息。UUID v4 是 REST API 资源路径最常见的选择。工具的大写和无连字符格式选项让你轻松将 UUID 调整为不同的 URL 和格式惯例。
自定义与旧版系统
UUID v2(DCE 安全)为操作系统级别的安全上下文加入本地用户与组识别码。UUID v8 允许自定义字段布局,适用于需要在维持标准 UUID 格式的同时嵌入特定数据位的系统。这些版本属小众但对特定集成场景很有价值。
工作原理
UUID 生成器完全在客户端运行。当你选择版本并点击生成时,工具会使用 JavaScript 和浏览器的 Web Crypto API 调用适当的算法。
对于随机型 UUID(v4),工具调用 crypto.getRandomValues() 生成加密安全的随机字节,然后将其格式化为标准 UUID 布局,并设置正确的版本和变体位。对于时间型 UUID(v1、v2、v6、v7),工具从系统时钟读取当前时间戳,并与随机时钟序列和节点字节结合。对于名称型 UUID(v3、v5),工具使用 MD5 或 SHA-1 经由 SubtleCrypto API 将命名空间和名称一起哈希,然后提取 128 位到标准 UUID 格式。
UUID 格式
UUID 是一个 128 位的值,以 36 个字符的字符串显示,格式为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个 x 是一个十六进制数字。128 位结构化为以下字段:
| 字段 | 位数 | 用途 |
|---|---|---|
time_low |
32 | 时间戳的低 32 位(v1、v2、v6) |
time_mid |
16 | 时间戳的中间 16 位 |
time_hi_and_version |
16 | 时间戳的高 12 位 + 4 位版本 |
clock_seq_hi_and_reserved |
8 | 时钟序列的高 6 位 + 2 位变体 |
clock_seq_low |
8 | 时钟序列的低 8 位 |
node |
48 | 节点识别码(MAC 地址或随机) |
版本 nibble(位 48-51,第三组的最高半字节)标识生成该 UUID 的算法:0001(v1)、0010(v2)、0011(v3)、0100(v4)、0101(v5)、0110(v6)、0111(v7)、1000(v8)。这就是在标准 UUID v4 550e8400-e29b-41d4-a716-446655440000 中看到的 4。
变体位(位 64-65,第四组第一个字节的两个最高位)标识 UUID 变体。RFC 9562 指定变体 10xxxxxx(位 64-65 = 10),这意味着第四组的第一个字符总是 8、9、a 或 b。
二进制布局示例
UUID 的 128 位结构最好通过可视化方式理解。以具体的 UUID v4 550e8400-e29b-41d4-a716-446655440000 为例,查看各组和字段的位对应:
组: 1 2 3 4 5
十六进制: 550e8400 e29b 41d4 a716 446655440000
二进制: [32 bits] [16 bits] [16 bits] [16 bits] [48 bits]
版本 nibble(组 3,高半字节):
550e8400-e29b-4 1d4-a716-446655440000
^
version = 0100 (v4)
变体位(组 4,高字节):
550e8400-e29b-41d4- a 716-446655440000
^
variant = 10xxxxxx
组 3-4 的完整二进制分解:
group 3 (16 bits) group 4 start (8 bits)
0100 0001 1101 0100 1010 0111
└─┘ └─┘
ver=0100 (v4) variant | clock_seq_hi
10
对于 UUID v7,前 48 位编码 Unix 毫秒时间戳:
018f3a6e-1a2b- 7 bcd-8a1b-2c3d4e5f6789
^
version = 0111 (v7)
groups 1-2: 48-bit Unix ms timestamp
0000 0001 1000 1111 0011 1010 0110 1110 0001 1010 0010 1011
group 3 high nibble:
0111 = version 7
第四组的高字节(上例中的 a)包含变体位。由于变体为 10,此字节范围始终在 1000 0000(0x80)到 1011 1111(0xBF)之间,对应于十六进制的第四组第一个字符 8、9、a 或 b。
UUID 版本说明
下表总结了八个标准 UUID 版本:
| 版本 | 算法 | 主要输入 | 确定性 | 可排序 | 典型用途 |
|---|---|---|---|---|---|
| v1 | 时间型 + 节点 | 时间戳、时钟序列、MAC | 否 | 是(时间) | 分布式系统、旧版时间型 ID |
| v2 | DCE 安全 | 时间戳、POSIX UID/GID | 否 | 是(时间) | DCE 环境识别码(小众) |
| v3 | MD5 哈希 | 命名空间 + 名称 | 是 | 否 | MD5 适用的名称型 ID |
| v4 | 随机 | 122 个随机位 | 否 | 否 | 通用识别码 |
| v5 | SHA-1 哈希 | 命名空间 + 名称 | 是 | 否 | 名称型识别码(建议优于 v3) |
| v6 | 重排时间型 | 时间戳(时间高位优先) | 否 | 是(时间) | 时间排序数据库键 |
| v7 | Unix 时间戳 + 随机 | Unix 毫秒时间戳 + 随机 | 否 | 是(毫秒) | 现代时间排序识别码 |
| v8 | 自定义 | 用户定义字段 | 视情况 | 视情况 | 自定义实验性或专有格式 |
UUID v1 — 时间型
UUID v1 结合 60 位时间戳(自 1582 年 10 月 15 日起的 100 纳秒间隔)、14 位时钟序列(用于时钟回拨检测)和 48 位节点识别码(传统上衍生自 MAC 地址)。这让每个生成节点都有唯一的识别码空间,无需协调。
时间戳的低、中、高位分别配置在 UUID 的前三个组中。这种非顺序布局意味着 v1 UUID 可按时间排序,但不具有数据库友好的单调递增顺序——v6 和 v7 解决了这个问题。
UUID v2 — DCE 安全
UUID v2 沿用 v1 的时间戳和时钟序列布局,但将 48 位节点字段替换为 32 位 POSIX 用户 ID(UID)或组 ID(GID)和 6 位本地域识别码。节点字段的其余 10 位和时钟序列的 2 位被重新用于本地域及其结构:
| 字段 | 位数 | 来源 |
|---|---|---|
| 时间戳 | 60 | 与 v1 相同的纪元(自 1582-10-15 起 100 纳秒) |
| 时钟序列 | 6 | 标准,从 14 位减少 |
| 本地域 | 6 | 标识 UID 域(POSIX、DCE 等) |
| 本地识别码 | 32 | POSIX UID 或 GID 值 |
UUID v2 规范来自 DCE 1.1:远程过程调用标准,而非核心 RFC 9562 UUID 规范。除旧版 DCE 环境外极少使用,大多数现代 UUID 生成器若非省略此版本,即是仅为完整性而包含。若你正在建立新系统,请改用 v4、v7 或 v5。
UUID v3 — MD5 名称型
UUID v3 从命名空间 UUID 和名称字符串生成确定性 UUID。其过程串联命名空间和名称字节,计算 MD5 哈希,取前 128 位作为 UUID。相同的命名空间和名称始终生成相同的 v3 UUID,适合内容寻址和稳定识别码。
有关两种名称型版本的比较,请参阅下方的 UUID v3 与 v5 一节。
UUID v4 — 随机
UUID v4 使用 122 个随机生成的位加上 6 个固定位(4 个版本 nibble,2 个变体位)。这是最广泛使用的 UUID 版本,大多数编程语言标准库都直接支持。Toollect UUID 生成器使用 crypto.getRandomValues() 确保加密安全的随机性,使输出适合用于安全敏感的场景,如会话令牌。
在一千亿个生成的 v4 UUID 中发生一次碰撞的概率约为 5.3 × 10²¹ 分之 1——在实践中微不足道。
UUID v5 — SHA-1 名称型
UUID v5 是 v3 的对应版本,使用 SHA-1 而非 MD5 作为底层哈希。它提供相同的确定性保证(相同命名空间 + 名称 = 相同 UUID),并使用抗碰撞性更强的哈希算法。对于需要名称型 UUID 的新系统,RFC 9562 建议使用 v5 而非 v3。
详细比较请参阅下方的 UUID v3 与 v5 一节。
UUID v6 — 重排时间型
UUID v6 重新排列 v1 时间戳,将时间戳的最高有效位放在最前面。这使得 v6 UUID 在按字典序排序时是单调递增的,不像 v1 那样时间戳分散在不相邻的字段中。UUID v6 是在需要时间排序的数据库索引或排序存储时 v1 的现代替代方案。
UUID v7 — Unix 时间戳 + 随机
UUID v7 使用 48 位 Unix 毫秒时间戳,后接 74 个随机位。时间戳占据最高有效位,使 v7 UUID 可按创建时间排序——对于 B-tree 索引性能至关重要的数据库主键而言是理想选择。UUID v7 比 v1 或 v6 更简单,因为它不需要 MAC 地址、时钟序列或 100 纳秒纪元转换。
对于需要时间排序 UUID 的新系统,v7 通常是最佳选择:它提供毫秒精度的排序、广泛的随机性和直接的实现。
UUID v8 — 自定义
UUID v8 保留版本 8 的识别码空间,供实验性或专有 UUID 格式使用。唯一固定的位是位 48-51 的 4 位版本 nibble(1000)和位 64-65 的 2 位变体(10)——其余 122 个位可自由用于任何自定义字段布局。
| 字段 | 位数 | 限制 |
|---|---|---|
| 自定义内容 | 48 | 位 0-47(组 1-2),自由格式 |
| 版本 | 4 | 固定为 1000 |
| 自定义内容 | 12 | 位 52-63(组 3 结尾),自由格式 |
| 变体 | 2 | 固定为 10 |
| 自定义内容 | 62 | 位 66-127(组 4-5),自由格式 |
v8 的常见用途包括嵌入公司特定前缀、结合截断时间戳与序列计数器,或将旧版识别码编码为 UUID 格式,同时维持标准格式兼容性。例如,系统可能将前 32 位分配为租户 ID、接下来 32 位为毫秒时间戳、其余 64 位为随机后缀——全部在标准 UUID 解析器可直接读取的格式内。
v8 格式未向 IANA 注册,也不保证跨系统互通性。这是一个私有用途空间,适用于标准 UUID 版本不符合所需数据布局的情况。
UUID v3 与 v5 比较
UUID v3 和 v5 都从命名空间 UUID 和名称生成确定性识别码,但它们的哈希算法不同:
| 方面 | UUID v3 | UUID v5 |
|---|---|---|
| 哈希算法 | MD5(128 位) | SHA-1(160 位,截断为 128) |
| 抗碰撞性 | 较低——MD5 被视为加密上不安全 | 较高——无实用碰撞攻击 |
| 性能 | 略快(MD5 与 SHA-1 比较) | 略慢 |
| 标准建议 | 仅为 v3 向后兼容 | RFC 9562 建议新系统使用 v5 |
| 互通性 | 若既有系统使用 v3 则必须使用 | 若既有系统使用 v5 则必须使用 |
Toollect UUID 生成器包含 RFC 9562 定义的四个预定义标准命名空间:DNS(6ba7b810-9dad-11d1-80b4-00c04fd430c8)、URL(6ba7b811-9dad-11d1-80b4-00c04fd430c8)、OID(6ba7b812-9dad-11d1-80b4-00c04fd430c8)和 X.500(6ba7b814-9dad-11d1-80b4-00c04fd430c8)。你也可以提供标准 UUID 格式的自定义命名空间,用于非标准命名空间。
使用方法
使用 Toollect UUID 生成器无需设置或注册。界面分为两个面板——一个用于 UUID v1/v2/v4/v6/v7/v8(即时生成),一个用于 UUID v3/v5(名称型生成)。
区块 1 — 标准 UUID(v1、v2、v4、v6、v7、v8)
- 从下拉菜单选择 UUID 版本。默认为 v4。
- 点击「生成」或按 Enter。新的 UUID 立即出现在输出字段中。
- 根据需要切换格式选项:
- 大写:将输出转换为大写十六进制数字。
- 不含连字符:移除连字符,生成精简的 32 字符字符串。
- 点击「复制」按钮复制结果。
版本下拉菜单切换会触发自动重新生成,因此从 v4 切换到 v7 会立即生成新的识别码。
区块 2 — 名称型 UUID(v3、v5)
- 在名称型面板的版本下拉菜单中选择 v3 或 v5。
- 选择命名空间:选择预设选项之一(DNS、URL、OID、X.500)或自定义。
- 若使用自定义命名空间,在文本字段中输入有效的 UUID。工具会验证格式,若 UUID 格式错误则显示错误信息。
- 在名称输入字段中输入名称。UUID 会随输入自动重新生成。
- 切换大写和不含连字符格式,然后如区块 1 般复制结果。
名称型面板在每次输入变更时都会生成 UUID——此面板没有独立生成按钮。
教程
本教程从打开工具到复制最终 UUID,逐步引导三个常见场景。
场景 1:为网页表单生成 UUID v4
- 在浏览器中打开工具。UUID 生成器界面显示两个面板。
- 在区块 1 中,确认版本下拉菜单设为 v4(默认值)。
- 点击「生成」。出现一个 UUID v4,例如
550e8400-e29b-41d4-a716-446655440000。 - **点击「复制」**将 UUID 复制到剪贴板,然后粘贴到网页表单或 API 请求中。
- **切换「大写」**并再次点击「生成」,生成
550E8400-E29B-41D4-A716-446655440000。 - **切换「不含连字符」**生成
550e8400e29b41d4a716446655440000,适用于精简存储或 URL 参数。
场景 2:为数据库主键生成时间排序 UUID v7
假设你正在设计一个 PostgreSQL 数据表,需要全局唯一的无序列号主键,同时希望保持良好的写入性能。
- 在区块 1 版本下拉菜单中选择 v7。输出字段立即显示新的 v7 UUID,例如
018f3a6e-1a2b-7bcd-8a1b-2c3d4e5f6789。 - 注意前几个字符——UUID v7 以 Unix 毫秒时间戳开头,因此连续生成的值在前几个组中会呈现递增趋势。
- 快速连续生成多个 UUID,观察到这些值是单调递增的:每个新 UUID 以比前一个更大或相等的开头。
- 复制识别码用于
INSERT语句:INSERT INTO users (id, name) VALUES ('018f3a6e-1a2b-7bcd-8a1b-2c3d4e5f6789', 'Alice');
场景 3:从资源 URL 生成确定性 UUID v5
想象你有一个内容管理系统,每篇文章由其 URL 标识,需要一个不随部署变更的稳定 UUID。
- 在区块 2 中,将版本设为 v5。
- 选择 URL 命名空间。这使用
6ba7b811-9dad-11d1-80b4-00c04fd430c8,基于 URL 的 UUID 标准命名空间。 - 在名称字段中输入文章 URL,例如
https://example.com/articles/uuid-guide。 - UUID 自动出现——每次使用 URL 命名空间输入相同的 URL,都会得到相同的 UUID。
- 测试确定性:改选 DNS 命名空间,观察 UUID 变更。切回 URL——原始 UUID 重新出现。
专业技巧
掌握这些高级技巧,充分利用 Toollect UUID 生成器:
-
数据库主键用 v7 而非 v1:UUID v7 从最高有效位开始按毫秒时间戳排序,为你提供 B-tree 友好的单调递增顺序,无需处理 MAC 地址或时钟序列管理的复杂性。对于需要时间排序 UUID 的新项目,从 v7 开始。
-
名称型 UUID 优先选用 v5 而非 v3:除非需要与使用 v3 的系统互通,否则一律使用 UUID v5。SHA-1 提供比 MD5 更高的碰撞安全边际,性能差异可忽略。工具在名称型面板中默认使用 v5 即基于此原因。
-
URL 参数中移除连字符:在 URL 路径或查询参数中使用 UUID 时,切换「不含连字符」。无连字符的 UUID 成为 32 字符十六进制字符串,不需要 URL 编码,在路由片段中外观看更简洁。
-
使用预定义命名空间确保跨系统一致性:DNS、URL、OID 和 X.500 命名空间已在 RFC 9562 中标准化。使用它们可确保任何符合 RFC 的 UUID 生成器对相同的名称生成相同的 v3 或 v5 UUID。这对于跨系统识别码一致性至关重要。
-
使用固定 v4 UUID 作为自定义命名空间:为 v3/v5 UUID 创建自定义命名空间时,生成一次 UUID v4,将其存储在配置中并重复使用。这可确保自定义命名空间内的所有识别码与任何其他命名空间不同。
-
多次点击批量生成:对于小批量,快速连续点击「生成」可生成不同的 UUID。对于大规模生成,请使用下方所述的命令行或程序化方法。
常见 UUID 迷思
几个广为流传的 UUID 说法可能不准确或具误导性。了解其细微差别有助于做出更好的架构决策。
「UUID 100% 保证唯一。」 没有任何识别码系统能提供绝对保证,但正确使用的 UUID 提供极高的抗碰撞性。对于 UUID v4,在十亿个生成的 ID 中发生至少一次碰撞的概率约为 10¹⁴ 分之 1。对于时间型版本(v1、v6、v7),跨不同节点的碰撞需要多台机器同时时钟重置。所有正确实现的 UUID 的实际碰撞率实际上为零。
「UUID v4 永远是最佳选择。」 UUID v4 是最通用的,对大多数应用程序来说没有问题,但并非所有场景都是最佳选择。对于数据库主键,v4 的随机分布会导致 B-tree 索引的页面分裂和写入放大。UUID v7 提供时间排序,可更有效地维护索引。对于必须可从名称重现的确定性识别码,v3 或 v5 是唯一正确的选择。
「UUID 完全是随机的。」 只有 UUID v4 是完全随机的(122 位熵)。UUID v1、v2、v6 和 v7 嵌入时间戳,使其部分可预测——信息可能通过识别码泄露。UUID v3 和 v5 对给定输入是确定性的。若不可预测性是必要条件(安全令牌、会话识别码),请使用搭配 Web Crypto API 的 v4。
「所有 UUID 格式都相同。」 所有 RFC 9562 UUID 共用 36 字符的 8-4-4-4-12 十六进制格式,但内部结构因版本而异。UUID v1 嵌入 MAC 地址和时间戳位;UUID v4 纯粹是随机的;UUID v7 结合时间戳与随机位。你可以从第 13 个字符识别版本(4 = v4、7 = v7 等),从第 17 个字符识别变体(8、9、a 或 b)。
「UUID 拖慢数据库性能。」 在较旧的数据库版本和将 UUID v4 存储为 ASCII 字符串的情况下,此说法部分正确。现代数据库(PostgreSQL 的 uuid 类型、MySQL 8+ 的 UUID_TO_BIN、SQL Server)将 UUID 存储为 16 字节二进制值,并提供原生索引支持。UUID v7 进一步通过时间排序生成减轻索引碎片化。对大多数工作负载而言,与自增整数的性能差异可忽略不计。
替代方案
Toollect UUID 生成器之外还有几种替代方案,各自适用于不同的工作流程。
| 工具 / 方法 | 最佳用途 | 限制 |
|---|---|---|
| Toollect UUID 生成器 | 浏览器型生成,所有 v1-v8 版本,无需安装,隐私优先 | 初始页面加载需要网络,不可脚本化 |
Unix uuidgen 命令 |
终端批量生成、脚本化、管道集成 | 通常仅 v1 和 v4;依平台实现而异 |
| ULID | 26 字符 base32 可排序 ID,URL 安全,不区分大小写 | 无版本/变体位;不与 UUID 兼容;仅 80 位随机性 |
| NanoID | 简短 URL 安全 ID(默认 21 字符),可设置字母表和长度 | 非 UUID;无标准格式或版本化;长度因设置而异 |
| Snowflake(Twitter 风格) | 64 位时间排序 ID,非常精简,分布式系统中高吞吐量 | 需要工作者 ID 协调;非 UUID 格式;实现因平台而异 |
| 在线 UUID 生成器(如 uuidgenerator.net) | 快速离线生成单个 UUID | 仅支持一到两个版本;常无加密级随机性;可能发送数据到服务器 |
PostgreSQL gen_random_uuid() |
INSERT 时在数据库侧生成 | 仅限 PostgreSQL;通常仅 v4;无 v7 或名称型版本 |
Python uuid 模块 |
Python 应用程序中的程序化生成 | 需要 Python 运行环境;非浏览器型 |
Node.js crypto.randomUUID() |
服务器端 Node.js 生成 | 仅限 Node.js;缺乏时间型和名称型版本 |
Web Crypto API (crypto.randomUUID) |
浏览器原生 v4 生成,零依赖 | 仅支持 v4;无格式选项或名称型 UUID |
对于大多数需要在浏览器中即时、私密、多版本 UUID 生成的用户,Toollect UUID 生成器提供最全面的功能集。
数据隐私
Toollect UUID 生成器在浏览器中完全处理你的每个字节数据。你输入的任何数据——名称、命名空间或生成的识别码——都不会传输到任何服务器、存储在任何数据库中或记录在任何系统中。
所有生成使用 JavaScript 内置的 Web Crypto API(crypto.getRandomValues、crypto.randomUUID、crypto.subtle.digest)。工具页面不含任何分析脚本、跟踪像素、Cookie 或第三方嵌入。不创建或读取任何 localStorage 或 sessionStorage 条目。
初始页面加载后,UUID 生成器可完全离线运行——即使在飞行模式下也能生成识别码,零网络活动。你可以通过浏览器开发者工具的网络选项卡验证,或完全断开网络连接。
故障排除
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| UUID v4 输出在连续生成间重复 | crypto.getRandomValues() 可能在测试环境中被模拟或不可用 |
在生产环境浏览器中,crypto.getRandomValues() 总是返回新熵。连续生成十个 UUID 测试——它们应全部不同。 |
| 名称型 UUID(v3/v5)无输出 | 名称字段为空或自定义命名空间无效 | 确认名称字段包含文本。若使用自定义命名空间,请验证其为标准格式的有效 UUID(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。 |
| 自定义命名空间验证失败 | UUID 格式不正确——缺少连字符、长度错误或十六进制字符无效 | 输入包含连字符的完整 36 字符 UUID。工具在生成前会验证格式。 |
| 复制按钮无作用 | 浏览器剪贴板 API 需要安全上下文或用户手势 | 确认页面通过 HTTPS 提供服务。复制按钮使用 navigator.clipboard.writeText(),在所有现代浏览器的 HTTPS 页面上均可运行。 |
| UUID v1 显示意外值 | 时间戳或时钟序列可能回绕 | UUID v1 使用自 1582 年 10 月起的 100 纳秒计数。2026 年的时钟计数仍在 60 位范围内(约 292 年)。若系统时间回拨,时钟序列会自然重置。 |
浏览器不支持 crypto.randomUUID |
较旧的浏览器版本 | 工具内部会回退到 crypto.getRandomValues()。支持 Chrome 80+、Firefox 75+、Safari 13+、Edge 80+。 |
| UUID v7 值并非严格递增 | 同一毫秒内的两次生成使用相同的时间戳前缀 | UUID v7 使用毫秒精度。在同一毫秒内,多次生成共用相同的时间戳;随机后缀每次变更。这是设计使然,不影响数据库索引排序。 |
技术规格
Toollect UUID 生成器经过正确性、性能和跨浏览器兼容性的工程设计。
标准遵循
| 方面 | 规格 |
|---|---|
| RFC | RFC 9562(取代 RFC 4122) |
| UUID 格式 | 128 位,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| 变体 | RFC 9562 变体(10xxxxxx) |
| 字符大小写 | 默认小写,可切换大写 |
| 连字符 | 默认包含,可切换移除 |
各版本算法细节
| 版本 | 熵来源 | 生成时间 |
|---|---|---|
| v1 | performance.now() 时间戳,crypto.getRandomValues() 时钟序列与节点 |
< 1 ms |
| v2 | 与 v1 相同,含 POSIX UID/GID(本地),节点字段已调整 | < 1 ms |
| v3 | 经由 crypto.subtle.digest() 的 MD5 |
~2-5 ms(异步) |
| v4 | crypto.getRandomValues() |
< 1 ms |
| v5 | 经由 crypto.subtle.digest() 的 SHA-1 |
~2-5 ms(异步) |
| v6 | 与 v1 相同的时间戳,但重新排列(时间高位优先) | < 1 ms |
| v7 | Date.now() 时间戳,crypto.getRandomValues() 随机后缀 |
< 1 ms |
| v8 | crypto.getRandomValues() 随机位 |
< 1 ms |
浏览器兼容性
| 浏览器 | 最低版本 | 状态 |
|---|---|---|
| Google Chrome | 80+ | 完整支持 |
| Mozilla Firefox | 75+ | 完整支持 |
| Apple Safari | 13+ | 完整支持 |
| Microsoft Edge | 80+ | 完整支持 |
| Samsung Internet | 13+ | 完整支持 |
| Opera | 67+ | 完整支持 |
隐私与安全
- 零数据传输:所有生成发生在浏览器内存中
- 不使用 Cookie、localStorage 或 sessionStorage
- 工具页面上无分析或跟踪脚本
- 初始页面加载后可完全离线运行
- 无需注册、登录或 API 密钥
- 通过 Web Crypto API 提供加密安全随机性
功能特色
- 生成所有 UUID 版本 v1 至 v8,包括时间型(v1、v6、v7)、随机型(v4)、名称型(v3、v5)、DCE 安全(v2)与自定义型(v8)
- 使用 Web Crypto API 进行加密安全随机生成,零网络传输
- 切换大写输出与移除连字符,生成适合显示或精简的 UUID
- 名称型 UUID 支持内置命名空间(DNS、URL、OID、X.500)与自定义命名空间验证
- 100% 客户端处理 — 不上传任何数据至服务器,无需注册或安装
- 一键生成与复制,所有现代浏览器与设备即时可用