Генератор UUID

Работает офлайнНичего не загружаетсяБесплатно, без регистрации
Не содержит метки времени, поэтому не выдаёт момент создания
До 1 000 за раз
Читается в вашем браузере — никуда не отправляется
Версия—
Вариант—
Создан—

Создаётся на вашем устройстве криптографическим генератором браузера.

Генерируйте UUID — случайные v4 или упорядоченные по времени v7 — по одному или пачкой, в нужном формате, и вставляйте любой UUID обратно, чтобы узнать его версию и время создания.

Устройство UUID версии 4

Возьмём f47ac10b-58cc-4372-a567-0e02b2c3d479. Цифра 4, открывающая третью группу, — маркер версии, а a в начале четвёртой группы кодирует вариант: её старшие биты всегда 10, поэтому этот символ бывает только 8, 9, a или b. Все остальные шестнадцатеричные цифры случайны.

Так из 128 бит случайными остаются 122. Дефисы не несут информации — они нужны только для читаемости, поэтому формат без дефисов столь же корректен, а в базе значение всё равно занимает 16 байт.

Насколько на самом деле маловероятно совпадение

122 случайных бита дают 5,3 × 10³⁶ возможных значений. Парадокс дней рождения говорит, что число, при котором совпадение становится вероятным, — примерно квадратный корень из этого, а не само число:

Сгенерировано UUIDШанс одного совпаденияПри миллиарде в секунду
103 триллиона1 на миллиард29 часов
103 квадриллиона1 на тысячу3,3 года
2,7 квинтиллионаРавные шансы86 лет

Поэтому дубликат в продакшене — это баг-репорт об источнике случайности, а не статистическая диковинка.

Какую версию выбрать

ВерсияНа чём основанаКогда применять
v1Метка времени + MAC-адресУстаревшая — раскрывает оборудование
v4СлучайностьПо умолчанию для публичных идентификаторов
v5Пространство имён + имя (SHA-1)Одинаковый вход должен давать тот же ID
v7Метка времени + случайностьКлючи базы, где важна сортируемая вставка

Частые вопросы

Когда выбирать версию 7 вместо версии 4?

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

Действительно ли сортируются UUID v7, созданные одной пачкой?

Да. Вся пачка попадает в одну миллисекунду, поэтому одна метка времени их не упорядочит — остальные биты были бы случайными, и набор выглядел бы сортируемым, не будучи им. Этот генератор держит счётчик в тех двенадцати битах, которые RFC 9562 для этого и отводит, и переходит в следующую миллисекунду, когда счётчик заполняется. Тысяча значений выходит ровно в том порядке, в каком создана.

Что такое UUID версии 4?

128-битный идентификатор, в котором 122 бита случайны, а 6 — фиксированные маркеры версии и варианта. В нём нет ни метки времени, ни MAC-адреса, ни счётчика, поэтому он ничего не сообщает о том, когда и где был создан. Именно поэтому он — выбор по умолчанию для публичных идентификаторов.

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

Теоретически да, практически нет. 122 случайных бита дают 5,3 × 10³⁶ возможных значений, и чтобы дойти до равных шансов на одно совпадение, нужно сгенерировать около 2,7 квинтиллиона. При миллиарде в секунду это 86 лет непрерывной работы. Любое совпадение в реальной системе объясняется сломанным источником случайности, а не невезением.

Можно ли использовать UUID как первичный ключ в базе?

Зависит от индекса. Случайные UUID разбрасывают записи по B-дереву, фрагментируя индекс и снижая скорость вставки на больших объёмах — это реальная плата в MySQL и SQL Server с кластерными индексами. UUIDv7, который помещает метку времени в старшие биты, сохраняет вставки последовательными и лучше подходит для новых схем, которым нужны оба свойства.

Насколько безопасно они генерируются?

Полностью. Используется crypto.randomUUID(), а где его нет — crypto.getRandomValues() с правильно выставленными битами версии и варианта. Оба питаются от криптографического пула энтропии операционной системы, поэтому результат годится для идентификаторов, которые нельзя угадать, например для токенов приглашения.

Похожие инструменты