Генератор UUID

Создавайте случайные UUID версии 4 или упорядоченные по времени версии 7: по одному или по тысяче за раз, в формате, который нужен вашему коду. Вставьте любой UUID ниже, чтобы узнать его версию, вариант и временную метку.

Версия

122 случайных бита от криптографического генератора вашего браузера. Обычный выбор.

Формат

Генерация в браузере…

Делаете приложение, которому нужны такие идентификаторы? Ему тоже нужен сервер. Сейчас от 3,02 € в месяц, на выбор: 2 226 серверов.

Проверить UUID

Вставьте UUID, чтобы увидеть, что в нём записано.

Работает в вашем браузере: ничего из введённого не отправляется на сервер.

Как создаются UUID

UUID — это 128 бит, записанные как 32 шестнадцатеричные цифры в пяти группах. Четыре бита указывают версию, а два или три — вариант; остальное зависит от версии. RFC 9562, опубликованный в 2024 году, заменил старый RFC 4122 и добавил версии 6, 7 и 8.

v4  xxxxxxxx-xxxx-4xxx-Vxxx-xxxxxxxxxxxx
v7  tttttttt-tttt-7ccc-Vxxx-xxxxxxxxxxxx

t = Unix time in ms (48 bits)
c = counter or random (12 bits)
x = random, V = 8, 9, a or b

Версия 4 заполняет остальные 122 бита случайными данными; эта страница берёт их у криптографического генератора случайных чисел вашего браузера. Версия 7 начинается с времени Unix в миллисекундах (48 бит), поэтому UUID, созданные позже, сортируются после более ранних, а остальное заполняется случайными битами. Если в одну миллисекунду создаётся много UUID, 12 бит после версии работают как счётчик, как разрешает RFC 9562, поэтому даже список из 1 000 остаётся упорядоченным.

Проверка читает биты версии и варианта любого UUID, а для версий 1, 6 и 7 — ещё и время, которое в нём хранится. UUID v4 времени не содержит, поэтому из него можно прочитать только версию.

Пример

Пример из RFC 9562 — 017f22e2-79b0-7cc3-98c4-dc0c0c07398f. Первые 12 шестнадцатеричных цифр, 017f22e279b0, — это 1 645 557 742 000 миллисекунд с 1970 года: 22 февраля 2022 года, 19:22:22 UTC. Цифра 7 после второго дефиса — версия, а 9 после третьего обозначает стандартный вариант.

Вопросы

UUID v4 или v7: что выбрать?

Для первичных ключей баз данных берите v7: новые строки получают большие идентификаторы и попадают в конец индекса, а не в случайные места, поэтому вставки остаются быстрыми, а индексы компактными. Берите v4, когда идентификатор не должен выдавать время создания, например в публичной ссылке. Оба достаточно уникальны для любых практических целей.

Могут ли два UUID совпасть?

Теоретически да, на практике нет. У UUID v4 122 случайных бита: чтобы получить 50 % вероятности хотя бы одного повтора, нужно создать около 2,7 квинтиллиона (2,7 × 10^18) идентификаторов. У UUID v7 за меткой времени в миллисекундах стоят от 62 до 74 случайных бит, в зависимости от способа создания, поэтому для коллизии понадобилось бы огромное число идентификаторов в одну миллисекунду. Повторы вызывает плохой генератор случайных чисел, а не сам формат.

GUID — это то же самое, что UUID?

Да. GUID — название Microsoft для того же 128-битного идентификатора, а Guid.NewGuid() в .NET создаёт UUID версии 4. Инструменты Microsoft часто записывают GUID в верхнем регистре и в фигурных скобках: чтобы получить такой вид, используйте параметры выше.

Выдаёт ли UUID v7, когда он был создан?

Да, с точностью до миллисекунды: вставьте его в проверку выше, и она покажет время. Благодаря этому они хорошо сортируются, но любой, кто увидит идентификатор, узнает и время создания записи. Если это важно, для публичных идентификаторов используйте v4.

Как создать UUID в командной строке?

В Linux: cat /proc/sys/kernel/random/uuid или uuidgen. В macOS: uuidgen (в верхнем регистре). В PostgreSQL: gen_random_uuid() для v4 и uuidv7() начиная с версии 18. В Python: import uuid; uuid.uuid4() и uuid.uuid7() начиная с Python 3.14. В JavaScript: crypto.randomUUID().