UUID 生成器/ v4 · v7

批量生成 UUID v4(随机)和 UUID v7(时间有序),支持大写/去连字符,一键复制,纯前端处理。

数量:
5 × UUID v4
00601977-88ac-4542-b2e8-40e00b8fcd60
6372f6f3-0785-439c-9913-c79c050b7367
2fcf17b0-09f6-47d6-8425-3032ec25bca0
8c6c0d33-075b-46e8-9b56-d21d955daf3f
a3c9d7c4-1a4a-4429-a71d-b5c26a84ea6b
UUID v4 使用 122 位密码学随机数生成,生成 1 万亿个 UUID 发生碰撞的概率约为 10⁻¹⁵,实际上不可能碰撞。

这个工具有帮到你吗?

什么是 UUID

UUID(Universally Unique Identifier)是 128 位的全局唯一标识符,通常表示为 32 个十六进制字符,如 `550e8400-e29b-41d4-a716-446655440000`。UUID v4 是随机生成的,碰撞概率极低(生成 103 万亿个 UUID 才有 50% 概率出现一个重复),足以在分布式系统中作为唯一主键使用。

UUID 的版本区别

v1 基于时间戳和 MAC 地址(可追溯来源)、v3/v5 基于命名空间和哈希(确定性)、v4 纯随机(最常用)、v7 时间排序+随机(新标准,兼顾排序和随机性)。日常开发中 v4 最常见,v7 适合需要按时间排序的数据库主键场景。

代码示例

JavaScript / Node.js
// UUID v4 (browser & Node 19+)
const id = crypto.randomUUID();
// "110e8400-e29b-41d4-a716-446655440000"

// Node.js (< 19)
import { randomUUID } from "crypto";
const id = randomUUID();

// npm: uuid package
import { v4 as uuidv4, v7 as uuidv7 } from "uuid";
console.log(uuidv4());
console.log(uuidv7());
Python
import uuid

# UUID v4
print(uuid.uuid4())
# "a8098c1a-f86e-11da-bd1a-00112444be1e"

# UUID v5 (name-based, deterministic)
print(uuid.uuid5(uuid.NAMESPACE_DNS, "example.com"))

# As hex (no dashes)
print(uuid.uuid4().hex)
Go
// go get github.com/google/uuid
import "github.com/google/uuid"

// UUID v4
id := uuid.New()
fmt.Println(id.String())

// UUID v7 (google/uuid v1.6+)
id7, _ := uuid.NewV7()
fmt.Println(id7.String())
SQL
-- PostgreSQL
SELECT gen_random_uuid();          -- v4
INSERT INTO users (id, name)
  VALUES (gen_random_uuid(), 'Alice');

-- MySQL 8+
SELECT UUID();  -- v1 format
-- For v4: use application layer

-- SQLite (with extension or app)
SELECT lower(hex(randomblob(4))) || '-' ||
  lower(hex(randomblob(2))) || '-4' ||
  substr(lower(hex(randomblob(2))),2) || '-' ||
  substr('89ab', abs(random()) % 4 + 1, 1) ||
  substr(lower(hex(randomblob(2))),2) || '-' ||
  lower(hex(randomblob(6)));

常见问题

UUID 是什么?
UUID(Universally Unique Identifier,通用唯一标识符)是一个 128 位的标识符,通常表示为 8-4-4-4-12 格式的 32 位十六进制字符串(如 550e8400-e29b-41d4-a716-446655440000)。由 RFC 4122 标准定义,用于分布式系统中无需中央协调地生成唯一 ID。
UUID v4 和 UUID v7 有什么区别?
UUID v4 完全随机(122 位随机数),简单通用,适合大多数场景。UUID v7 的前 48 位是 Unix 毫秒时间戳,天然时间有序,在数据库中可按 UUID 排序即得到创建时间顺序,B-tree 索引性能更好,是新项目的推荐选择。
UUID 碰撞的概率有多大?
UUID v4 使用 122 位随机数,理论上在生成约 2^61 个(约 23 亿亿个)UUID 后才有 50% 的碰撞概率。实际应用中每秒生成数百万个 UUID 也不用担心碰撞问题,可放心用于分布式主键。
UUID 和 ULID 哪个更好用?
ULID(Universally Unique Lexicographically Sortable Identifier)与 UUID v7 类似,都是时间有序的,但 ULID 使用 Crockford base32 编码(26 个字符),字符串更短,不含连字符。UUID v7 是 IETF 官方标准,生态支持更广;ULID 更紧凑,适合追求短 ID 的场景。
如何在数据库中存储 UUID?
PostgreSQL 有原生 UUID 类型,存储高效。MySQL/MariaDB 可用 BINARY(16) 存储二进制形式(比 VARCHAR(36) 节省空间),或直接用 CHAR(36)。MongoDB 可用 BinData(3) 或直接存字符串。建议对 UUID 列建立索引。
UUID v7 相比 UUID v4 在数据库性能上有什么优势?
UUID v4 完全随机,插入新记录时会导致 B-tree 索引的随机写,页分裂频繁,影响写入性能和缓存命中率。UUID v7 时间有序,新记录总是插入到 B-tree 末尾,索引增长顺序,写入性能接近自增 ID,在大表场景下性能差异显著。