UUID生成器
立即生成 UUID v4 和 UUID v7 标识符
立即生成 UUID v4 和 UUID v7 标识符
UUID v4 使用随机数生成。它提供了 122 位的随机性,使得冲突极不可能发生。
UUID v7 结合了 Unix 时间戳(毫秒)和随机位。它是时间排序的,使其非常适合数据库索引。
UUID 生成器 — 一键快速生成 UUID v4 与 v7 标识符
每个现代应用程序都需要唯一标识符——例如数据库主键、API 令牌、会话 ID 以及分布式系统等场景。硬编码 ID 或依赖自增整数不仅容易引发冲突,还会带来安全风险和扩展瓶颈。我们免费的 UUID 生成器 通过一键生成密码学安全级别的通用唯一标识符来彻底解决这些问题。您可以在纯随机模式下使用 UUID v4,或使用时间有序模式下使用 UUID v7,单次最多可批量生成 100 个标识符并一键复制到剪贴板。所有操作均在您的浏览器本地完成,数据绝不会上传至任何服务器。
什么是 UUID?
UUID(Universally Unique Identifier,通用唯一标识符)是一个 128 位的标识符标准,最初由 RFC 4122 定义,后由 RFC 9562 更新。它通常表示为带连字符的 36 个字符的字符串,例如 550e8400-e29b-41d4-a716-446655440000。“Universally unique”意味着生成两个相同 UUID 的概率微乎其微——对于 UUID v4 而言,概率约为 1/2.71 × 10^18。
UUID 在软件开发中无处不在。数据库常将其作为主键,因为可以在服务器间无需协调独立生成;API 常将其作为请求 ID 用于追踪和调试;认证系统将其用作会话令牌;分布式系统则将其作为事件 ID 用于日志关联。任何需要在无需中心协调的情况下保证唯一性的场景,UUID 都是最佳选择。
与自增整数不同,UUID 不会透露任何关于记录顺序或数量的信息。这使得它们在面向公众的 URL 和 API 中更加安全——攻击者无法通过递增数字来猜测其他资源的 ID。
如何使用 UUID 生成器
生成 UUID 仅需几秒钟。选择您偏好的版本,调整数量,然后点击生成。
- 选择 UUID 版本。 如需纯随机标识符请选择 UUID v4,如需时间有序标识符请选择 UUID v7。各版本各有优势,详见下方对比表。
- 设置数量。 一次可批量生成 1 到 100 个 UUID。所有 UUID 均独立生成。
- 切换格式选项。 启用 Uppercase(大写) 可输出大写的十六进制字母(适用于某些数据库系统)。启用 No Dashes(无连字符) 可输出不带连字符的 32 位十六进制字符串(常见于部分 API 和遗留系统)。
- 点击生成。 工具将使用密码学安全随机数生成器立即为您创建 UUID。
- 复制单个 UUID 只需点击列表中的任意 UUID,或点击 Copy All(全部复制) 即可获取每行一个 UUID 的完整列表。
UUID v4 vs UUID v7:该如何选择?
| 特性 | UUID v4 | UUID v7 |
|---|---|---|
| 生成方式 | 122 位随机数据 | 48 位 Unix 时间戳(毫秒) + 74 位随机数据 |
| 唯一性 | 随机碰撞概率 | 随机碰撞概率(熵值相同) |
| 是否支持时间排序 | 否 | 是 — 以时间戳开头 |
| 数据库性能 | 随机插入模式会导致索引碎片化 | 顺序插入模式可提升索引局部性 |
| 适用场景 | 通用标识符、令牌、一次性密钥 | 数据库主键、事件日志、时序数据 |
| 标准规范 | RFC 4122 | RFC 9562 (2024) |
UUID v4 几十年来一直是默认选择。它简单、支持广泛且兼容性强。然而,由于 UUID v4 值完全随机,将其插入 B-tree 数据库索引会导致随机页分裂和较差的缓存局部性。对于高吞吐量的数据库,这可能会显著降低写入性能。
UUID v7 通过将毫秒级精度的 Unix 时间戳嵌入前 48 位解决了这一问题。这意味着 UUID v7 的值大致按创建时间排序,从而保持数据库索引的结构化并提升插入性能。如果您正在构建将 UUID 作为数据库主键的新系统,UUID v7 是现代的最佳实践。
核心功能
| 功能特性 | 说明 |
|---|---|
| 支持 UUID v4 与 v7 | 根据您的使用场景自由切换生成版本 |
| 批量生成 | 一次点击最多生成 100 个 UUID |
| 大写切换 | 输出大写十六进制格式,满足特定系统要求 |
| 无连字符选项 | 去除连字符,生成紧凑的 32 位十六进制字符串 |
| 点击即复制 | 点击任意 UUID 即可瞬间复制到剪贴板 |
| 一键复制全部 | 将所有生成的 UUID 以换行分隔的形式批量复制 |
| 密码学安全 | 基于 crypto.getRandomValues() 实现真随机数生成 |
| 隐私优先 | 所有生成操作均在浏览器本地完成,无需网络请求 |
实际应用场景
数据库主键
将自增整数替换为 UUID 后,分布式系统无需协调即可独立生成 ID。UUID v7 在此场景下尤为实用,其时间有序的特性能够保持数据库索引的高效性。
API 请求 ID
为每个传入的 API 请求分配一个 UUID,用于追踪、调试和日志关联。当用户报告错误时,您可以直接搜索日志中的请求 UUID,完整查看请求到响应的整个生命周期。
会话令牌与身份验证
UUID 是不可预测且唯一的,因此非常适合作为会话标识符。在用户登录时生成 UUID v4,将其存储在会话存储中,并在后续每次请求时进行验证。
分布式事件系统
在微服务架构中,事件需要唯一标识符,且可由任意服务独立生成,无需中心协调。UUID 确保即使服务并发运行,也不会产生重复的事件 ID。
文件与资源命名
用户上传文件时,直接使用原始文件名存在风险——可能包含特殊字符、与已有文件冲突,或泄露内部结构。为每个文件生成 UUID 并作为存储键可彻底规避此问题。该方案同样适用于生成的报表、导出文件及临时资源。
测试与开发
开发者在单元测试、数据夹具和 Mock 数据中经常需要示例 UUID。批量生成 10 或 20 个 UUID,一键复制后直接粘贴到测试文件或数据库初始化脚本中即可。
数据脱敏
当需要在数据集中替换个人敏感信息(PII)同时保持唯一性时,UUID 可提供匿名但唯一的替代值。每个真实 ID 仅映射到一个 UUID,且该映射关系不可逆。
使用技巧与最佳实践
- 为新数据库主键使用 UUID v7。 时间有序的前缀可保持 B-tree 索引健康,相比随机 UUID v4 值显著提升写入吞吐量。
- 令牌与一次性标识符请使用 UUID v4。 当需要完全不可预测性时(如会话令牌、nonce、临时密码),UUID v4 是正确选择。
- 在数据库中存储为原生 UUID 类型。 PostgreSQL 提供原生的
UUID类型,将值存储为 16 字节而非 36 个字符。这不仅能节省存储空间,还能提升查询性能。MySQL 8.0+ 也已支持原生 UUID 类型。 - 不要将 UUID 用作密钥/凭证。 尽管 UUID v4 值难以猜测,但它们并非设计为密码学密钥。对于 API Key、访问令牌或加密密钥,请使用我们专用的 Password Generator 或标准的密钥派生函数。
- 比较 UUID 时统一大小写。 规范规定 UUID 不区分大小写,但大多数编程语言中的字符串比较是区分大小写的。比较前请务必统一转换为小写(或大写)。
- 优先使用带连字符的格式。 标准的 36 字符带连字符格式被所有 UUID 库广泛识别与支持。去除连字符虽可节省 4 字节,但可能导致部分解析器出现兼容性问题。
常见问题解答 (FAQ)
UUID 生成器免费吗?
是的。UUID 生成器完全免费,无使用次数限制,无需注册,无任何隐藏费用。按需生成,随用随取。
生成的 UUID 真的唯一吗?
UUID v4 使用 122 位随机数,这意味着存在 2^122(约 5.3 × 10^36)种可能值。生成重复值的概率极低,即使每秒生成数十亿个 UUID 并持续数百万年,也难以遇到冲突。在实际应用中,UUID v4 可视为唯一。
UUID v4 和 UUID v7 有什么区别?
UUID v4 基于纯随机数据生成,而 UUID v7 以毫秒级 Unix 时间戳开头,后接随机位。两者均具备唯一性,但 UUID v7 的值可按创建时间排序,更利于数据库索引。通用随机场景请选用 UUID v4,时间排序敏感场景请选用 UUID v7。
可以生成不带连字符的 UUID 吗?
可以。开启 No Dashes(无连字符) 选项即可生成不带连字符的 32 位十六进制字符串。该格式常见于部分 API、遗留系统及紧凑存储场景。
此工具支持离线使用吗?
工具运行于浏览器中,并调用内置的 crypto.getRandomValues() API 生成 UUID。页面加载完毕后,生成操作完全离线运行,无需任何网络请求。但首次访问仍需网络连接以加载页面。
我的数据会发送到服务器吗?
不会。所有 UUID 生成均完全在您的浏览器本地通过 JavaScript 执行。无任何 UUID 被传输、记录或存储至服务器。当您离开页面时,生成的值仅存在于您的剪贴板中。