UUID 在线生成器
UUID v1/v3/v4/v5/v6/v7 + NanoID + ULID + 短 ID · 11 种格式 · 批量 1-1000
v1/v4/v5/v7/批量
UUID v1/v3/v4/v5/v6/v7 + NanoID + ULID + 短 ID · 11 种格式 · 批量 1-1000
| 格式 | 长度 | 含时间 | 可排序 | 典型用途 |
|---|---|---|---|---|
| UUID v4 | 36 | 否 | 否 | 通用 90% 场景 |
| UUID v7 | 36 | 毫秒 | 是 | 数据库主键(替代 v4) |
| UUID v1 | 36 | 100ns | 是 | 分布式 ID |
| UUID v6 | 36 | 是 | 是 | v1 兼容场景 |
| UUID v3/v5 | 36 | 否 | 否 | 命名空间确定性 ID |
| NanoID | 21 | 否 | 否 | URL 短链 / 邀请码 |
| ULID | 26 | 毫秒 | 是 | 日志 / 时间序列 |
| 短 ID | 8 | 否 | 否 | 短链 / 验证码 |
了解工具定位 · 使用场景 · 对比优势
生成 UUID v1/v4/v5/v7,支持一次批量创建多个。开发者测试数据库主键、API 接口模拟、分布式系统节点标识等场景,无需安装任何软件。所有生成在浏览器内完成,UUID 不上传服务器。
后端开发者在设计分布式系统时,自增主键容易在多节点写入时产生冲突。使用本工具生成 v4 随机 UUID 作为主键,在毫秒级内得到全局唯一 ID,避免了数据库自增锁和中心化 ID 生成器的性能瓶颈,让分库分表后的数据合并不再出现主键重复。
微服务架构下,一次用户请求会经过 3-5 个服务节点,日志散落在不同机器上。运维人员在每个入口网关处用本工具生成 v7 时间排序 UUID 作为 trace_id,后续在 ELK 中按时间戳前缀快速排序和过滤,从 10 万条日志中定位一次超时请求的时间从 15 分钟缩短到 10 秒。
Web 应用需要为每个登录用户分配一个不可猜测的 session token。使用本工具生成的 v4 UUID(122 位随机比特)作为会话标识符,碰撞概率极低,相比自增 ID 或时间戳哈希,攻击者无法通过枚举 token 来窃取其他用户的会话,且生成过程完全在浏览器端完成,不经过服务器日志,避免敏感信息泄露。
设计师导出 200 个图标 SVG 文件时,默认命名是「未标题-1.svg」到「未标题-200.svg」,上传到 CDN 后极易被覆盖或混淆。使用本工具的批量生成功能,一次性产出 200 个 v4 UUID 作为文件名前缀,粘贴到批量重命名工具中,3 分钟完成所有文件的唯一标识,后续版本迭代只需替换 UUID 前缀即可避免缓存污染。
运营人员需要为 5000 条营销短信生成短链接,每条链接需要一个 8 位唯一码。使用本工具生成 v4 UUID 后取前 8 位作为短链后缀,相比随机数生成器,UUID 的熵值更高,在 5000 次生成中零碰撞,且无需查重数据库,直接写入即可保证唯一,将短链生成时间从 5 分钟压缩到 30 秒。
QA 工程师在压测时需要模拟 10 万条不重复的用户 ID。使用本工具的批量生成功能,选择 v4 模式,一次生成 10 万个 UUID 并导出为 CSV,直接灌入测试数据库。相比手写脚本生成,省去了编写随机数逻辑和去重校验的代码时间,且 v4 的随机性更接近真实生产环境的数据分布特征。
| 维度 | 本工具 | 竞品 A (uuidgenerator.net) | 传统方法 (命令行) |
|---|---|---|---|
| 数据隐私 | 纯浏览器生成,不上传任何数据 | 网页生成,需加载远程 JS 脚本 | 本地执行,完全离线 |
| 离线可用 | 完全离线,加载后断网可用 | 必须联网 | 完全离线,依赖系统环境 |
| 批量生成 | 支持,一次可生成多个 UUID | 支持,可指定数量 | 需编写脚本循环调用 |
| 版本支持 | v1/v4/v5/v7 | 仅 v4 | 取决于系统工具,通常支持 v1/v4 |
| 操作门槛 | 打开即用,无需配置 | 打开即用,无需配置 | 需打开终端,输入命令 (如 uuidgen) |
| 输出格式 | 纯文本,可一键复制 | 纯文本,可复制 | 需手动复制或重定向输出 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| v4 | 550e8400-e29b-41d4-a716-446655440000 | 典型场景:随机 UUID v4,最常用版本 |
| v4 批量 5 个 | f47ac10b-58cc-4372-a567-0e02b2c3d479 d9b4c1f0-3a5e-4b7c-8d9e-1f2a3b4c5d6e 7a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d e3f4a5b6-c7d8-4e9f-0a1b-2c3d4e5f6a7b 8c9d0e1f-2a3b-4c5d-6e7f-8a9b0c1d2e3f | 批量生成 5 个 v4 UUID,每行一个 |
| v1 | c7b1d2e3-4f5a-6b7c-8d9e-0f1a2b3c4d5e | 典型场景:基于时间戳和 MAC 地址的 v1 |
| v5 namespace: DNS name: example.com | 2ed6657d-e927-568b-95e1-2665a8aea6a2 | 典型场景:基于 DNS 命名空间的 v5 哈希 |
| v7 | 018f3a6e-7b8c-4d9e-0f1a-2b3c4d5e6f7a | 边界 case:新版时间有序 v7(Unix ms 时间戳) |
| v4 批量 1000 个 | (返回 1000 行 UUID,每行一个) | 边界 case:大数量批量测试性能与去重 |
| v5 namespace: URL name: https://example.com/path | 296eb1f0-8e5a-5a6b-9c7d-8e9f0a1b2c3d | 易错 case:URL 命名空间需完整路径,含协议 |
| (默认生成一个 v4 UUID) | 易错 case:空输入时工具默认行为 |
使用 UUID v1 生成唯一标识,认为它和 v4 一样随机需要时间戳+MAC 地址唯一性时用 v1;需要纯随机标识时用 v4UUID v1 基于时间戳和 MAC 地址,可预测;v4 是随机数,适合安全场景如会话令牌
批量生成 1000 个 UUID 后直接使用,未检查重复批量生成后执行一次去重检查,或使用 v5(基于命名空间+名称的确定性 UUID)v4 虽然重复概率极低(约 2^122 分之一),但在高并发批量场景下仍可能碰撞,v5 可避免
用 UUID v4 作为用户密码或 API 密钥使用专门的密码生成器或密钥派生函数(如 PBKDF2、Argon2)UUID 是 128 位标识符,不是加密密钥;v4 随机性虽高,但无密钥强度保证,且长度固定 36 字符
在 URL 路径中使用 UUID 时,认为大小写不敏感统一使用小写 UUID(如 a1b2c3d4-...),或确保服务端做大小写归一化UUID 标准(RFC 4122)不区分大小写,但 HTTP URL 路径在大多数服务器上区分大小写,可能导致 404
用 v5 生成 UUID 时,将命名空间设为任意字符串如 "myapp"使用预定义命名空间 UUID(如 DNS: 6ba7b810-...、URL: 6ba7b811-...)或自定义 UUID 命名空间v5 的命名空间必须是 UUID 格式;随意字符串会导致不同实现生成不同结果,破坏确定性
在需要兼容旧系统时使用 v7 UUID确认目标系统支持 v7(RFC 9562 新标准),否则回退到 v4 或 v1v7 是 2024 年新标准,很多旧库和数据库不支持;v1 和 v4 是广泛兼容的成熟版本
将批量生成的 UUID 直接拼接到 INSERT 语句中(如 INSERT INTO t VALUES ('...'), ('...'))使用参数化查询或批量插入 API,避免字符串拼接UUID 字符串含连字符,直接拼接可能引发 SQL 注入或格式错误;参数化查询更安全
在数据库中存储 UUID 为 CHAR(36) 字符串存储为 BINARY(16) 或使用数据库原生 UUID 类型(如 PostgreSQL 的 uuid 类型)字符串存储占用 36 字节,二进制仅 16 字节,索引效率更高;MySQL 8.0+ 支持 BINARY(16) 优化
公式推导 · 流程图解 · 依据出处
UUID v4: 随机 128 位,其中 6 位固定为版本/变体标识,122 位随机。 UUID v7: 48 位时间戳 + 74 位随机 + 6 位固定标识。
128 位 — UUID 总长度,128 比特6 位固定 — 版本号(4 位) + 变体(2 位)122 位随机 — v4 中剩余随机比特48 位时间戳 — v7 中 Unix 毫秒时间戳74 位随机 — v7 中剩余随机比特生成 v4 UUID:随机 128 位如 1100 1010 ...(共 128 位),固定第 13 位十六进制为 4(版本),第 17 位为 8/9/a/b(变体),最终输出如 550e8400-e29b-41d4-a716-446655440000。 生成 v7 UUID:取当前时间戳 1718000000000(毫秒)占 48 位,拼接 74 位随机数,固定版本 7 和变体,输出如 018f3a6e-1b7c-7f00-8000-123456789abc。
基于 IETF RFC 9562 标准。v4 适用于无需排序的随机标识;v7 适用于需要按时间排序的场景(如数据库主键)。不适用于需要确定性输出的场景(应使用 v5 命名空间哈希)。
3 种主流语言 · 复制即用
import uuid
# UUID v4(随机)
uid_v4 = uuid.uuid4()
print(f"v4: {uid_v4}")
# UUID v1(时间戳 + MAC)
uid_v1 = uuid.uuid1()
print(f"v1: {uid_v1}")
# UUID v5(命名空间 + 名字,SHA-1)
namespace = uuid.NAMESPACE_DNS
name = "example.com"
uid_v5 = uuid.uuid5(namespace, name)
print(f"v5: {uid_v5}")
# UUID v7(时间有序,Python 3.14+ 或使用 uuid7 库)
# 以下用 uuid7 库(pip install uuid7)
from uuid7 import uuid7
uid_v7 = uuid7()
print(f"v7: {uid_v7}")
# 批量生成 v4
batch = [uuid.uuid4() for _ in range(5)]
print(f"批量 v4: {batch}")package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
// UUID v4(随机)
uidV4 := uuid.New()
fmt.Printf("v4: %s\n", uidV4)
// UUID v1(时间戳 + MAC)
uidV1, _ := uuid.NewUUID()
fmt.Printf("v1: %s\n", uidV1)
// UUID v5(命名空间 + 名字,SHA-1)
namespace := uuid.NameSpaceDNS
name := "example.com"
uidV5 := uuid.NewSHA1(namespace, []byte(name))
fmt.Printf("v5: %s\n", uidV5)
// UUID v7(时间有序,需 uuid v1.6.0+)
uidV7, _ := uuid.NewV7()
fmt.Printf("v7: %s\n", uidV7)
// 批量生成 v4
batch := make([]uuid.UUID, 5)
for i := range batch {
batch[i] = uuid.New()
}
fmt.Printf("批量 v4: %v\n", batch)
}// 浏览器原生 crypto.randomUUID() 生成 v4
const uidV4 = crypto.randomUUID();
console.log(`v4: ${uidV4}`);
// 使用 uuid 库(npm install uuid)生成多种版本
const { v1: uuidv1, v4: uuidv4, v5: uuidv5, v7: uuidv7 } = require('uuid');
// UUID v1(时间戳 + MAC)
console.log(`v1: ${uuidv1()}`);
// UUID v4(随机)
console.log(`v4: ${uuidv4()}`);
// UUID v5(命名空间 + 名字,SHA-1)
const MY_NAMESPACE = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; // DNS 命名空间
console.log(`v5: ${uuidv5('example.com', MY_NAMESPACE)}`);
// UUID v7(时间有序)
console.log(`v7: ${uuidv7()}`);
// 批量生成 v4
const batch = Array.from({ length: 5 }, () => uuidv4());
console.log(`批量 v4: ${batch}`);8 个高频疑问