# UUID 生成器

URL: https://byshahid.com/zh/tools/uuid-generator/
Author: Muhammad Shahid (https://byshahid.com/)
免费工具 · 在浏览器中运行

生成随机的第 4 版 UUID，单个或批量生成，并按需要的格式复制。

**快速解答:** UUID（通用唯一识别码）是 128 位的 ID，写成五组共 32 个十六进制字符，例如 3f2b8c1e-9a4d-4c7e-b5f0-1d2e3a4b5c6d。第 4 版 UUID 是随机的；本工具使用浏览器的加密安全随机数生成器创建它们，两个相同的概率可以忽略不计。

## 使用方法

1. **选择数量.** 从 1 到 500。
2. **选择格式.** 小写或大写，带或不带连字符。
3. **复制.** 每行一个，可直接粘贴。

## 示例

两个随机的版本 4 UUID：

输入:

```
数量：2 · 连字符：开 · 大写：关
```

输出:

```
ab08a0b9-f88e-4a24-a97c-d1abe84806b9
b75d6a62-daac-4d22-8d9f-d3229db508c6
```

## 常见错误及解决方法

- **invalid input syntax for type uuid (PostgreSQL)**: 这个值不是有效的 UUID，常见原因是多了空格或引号，或连字符位置不对。请发送标准的 36 个字符格式。
- **两个 UUID 看起来一样却不相等**: 一个是大写，一个是小写。UUID 不区分大小写，比较前统一转成小写。
- **用 UUID 做主键后插入变慢**: 随机的 v4 UUID 会把插入分散到整个索引。大表可以考虑按时间排序的 UUID v7，并用原生 uuid 类型或 16 字节二进制存储，而不是文本。
- **crypto.randomUUID is not a function**: 浏览器中它需要安全上下文（HTTPS 或 localhost），Node.js 需要 14.17 或更高版本。请通过 HTTPS 提供页面。

## 常见问题

### 两个 UUID v4 会重复吗？

理论上可能，实际上不会：第 4 版 UUID 大约有 5.3 × 10^36 种可能。

### UUID v4 和 v7 有什么区别？

v4 完全随机。v7 以时间戳开头，按创建时间排序，适合做数据库主键。

### UUID 和 GUID 一样吗？

一样。GUID 是微软对同一种 128 位标识符的叫法。

### 如何在 JavaScript 中生成 UUID？

在现代浏览器和 Node.js 中，crypto.randomUUID() 会返回第 4 版 UUID。

### 应该用 UUID 作为数据库 ID 吗？

当 ID 需要跨系统唯一时可以；写入量大时，按时间排序的 UUID（v7）比随机的 v4 更利于索引。

### UUID 的格式是怎样的？

32 个十六进制字符，按 8-4-4-4-12 分组。第三组的第一个字符表示版本，v4 即为 4。

### UUID 可以作为安全令牌吗？

安全生成器产生的第 4 版 UUID 很难被猜到，但对于密码重置链接等机密，请使用足够长且带有效期的专用随机令牌。

### 什么是 nil UUID？

00000000-0000-0000-0000-000000000000，有时用作空值。

### 如何在 Python 中生成 UUID？

import uuid，然后调用 uuid.uuid4()。

### UUID 区分大小写吗？

不区分。大写和小写表示同一个值，不过通常使用小写。

## 相关内容

- [密码生成器](https://byshahid.com/zh/tools/password-generator/)
- [SHA-256 哈希生成器](https://byshahid.com/zh/tools/hash-generator/)
- [Unix 时间戳转换器](https://byshahid.com/zh/tools/unix-timestamp-converter/)

## 来源

- [RFC 9562: Universally Unique IDentifiers](https://www.rfc-editor.org/info/rfc9562)
