Сгенерировать UUID
Сгенерируйте UUID v4, v7 и v1 пакетно, до 10 000 за раз, или расшифруйте существующий идентификатор, чтобы увидеть его версию, вариант и метку времени.
Как сгенерировать UUID
- 1
Выберите версию UUID
Выберите v4 для чистой случайности, v7 — когда нужны идентификаторы, которые сортируются по времени создания, или v1 — для классического формата на основе времени. NIL и MAX выдают два зарезервированных константных значения.
- 2
Задайте количество и формат
Сгенерируйте до 10 000 UUID за раз. Выберите верхний или нижний регистр, оставить ли дефисы, и обернуть ли каждый UUID в кавычки, фигурные скобки или префикс urn:uuid: — чтобы сразу вставлять в код.
- 3
Скопируйте список или скачайте его
Скопируйте все сгенерированные UUID в буфер одним кликом или скачайте пакет как текстовый файл или CSV — для пакетов v1 и v7 добавляется колонка с меткой времени.
Почему v7 вытесняет v4 для ключей базы данных
UUID v4 — это 122 бита чистой случайности. Пакет таких значений, вставленный в индекс базы данных, приходит в совершенно непредсказуемом порядке. Это разбрасывает записи по индексу и ухудшает производительность на больших объемах. UUID v7 начинается с 48-битной метки времени в миллисекундах, поэтому более поздние идентификаторы всегда сортируются после более ранних. Так вы получаете локальность записи, как у автоинкрементного целого, но сохраняете устойчивость к коллизиям и децентрализованную генерацию UUID. Этот инструмент делает пакеты v7 монотонными даже в пределах одной миллисекунды — старшие биты случайной части работают как счетчик.
Почему v1 здесь никогда не содержит MAC-адрес
В исходном определении UUID v1 из 1993 года последние 48 бит брались из MAC-адреса сетевой карты — считалось, что у двух компьютеров не бывает одинакового адреса. В браузере этот адрес недоступен, а там, где он есть, реальный MAC-адрес в каждой строке базы превращается в метку для слежки за устройством. Этот генератор всегда заполняет эти 48 бит случайными байтами и выставляет multicast-бит, как позволяет RFC 9562. Так сохраняется упорядочивание по времени у v1, но не раскрывается никакой аппаратный идентификатор.
Каждый идентификатор генерируется локально
Генерация, форматирование и расшифровка выполняются прямо в этой вкладке с помощью Web Crypto API — ничего не отправляется на сервер и не записывается в хранилище браузера. В аналитику уходит только общий сигнал «нажата кнопка» с версией и количеством, но не сами идентификаторы.
Частые вопросы
В чем разница между UUID v4 и v7?
v4 — это 122 бита чистой случайности без какой-либо структуры. v7 тратит первые 48 бит на метку времени в миллисекундах, поэтому пакет значений v7 сортируется в порядке создания. Это удобно для первичного ключа в базе, при этом случайности хватает, чтобы избегать коллизий.
Когда использовать v7 вместо v4 для ключей базы данных?
Используйте v7, когда идентификатор становится первичным ключом или колонкой индекса: временной порядок держит новые строки физически рядом в индексе, вставка заметно быстрее, чем со случайным распределением ключей v4. v4 подойдет, если значение никогда не попадает в индекс, например для одноразового токена.
Почему v1 здесь не содержит MAC-адрес?
Браузеры не могут читать MAC-адрес устройства, а даже вне браузера встраивание его в каждый UUID выдает, какая именно машина его создала. Этот инструмент заполняет эту часть UUID v1 случайными байтами, что явно разрешено RFC 9562.
Насколько вероятна коллизия UUID?
Для v4 генерация миллиарда UUID в секунду около 85 лет дает примерно 50% шанс одной коллизии — ждать ее не стоит. v7 и v1 добавляют к случайности еще и метку времени, что делает случайные коллизии еще менее вероятными.
Можно ли использовать UUID как пароль или токен доступа?
Это плохая идея. В UUID v4 есть полезная случайность, но его формат предсказуем, и инструменты относятся к нему как к открытому идентификатору, а не к секрету. Для паролей и токенов используйте отдельный генератор паролей.
Зачем нужны UUID NIL и MAX?
NIL (все нули) — зарезервированное значение «нет идентификатора» или «не задан» во многих системах. MAX (все единицы), введенный позже, служит как «больше любого реального UUID» в запросах по диапазону. Оба — фиксированные константы, а не случайные значения.
Откуда берется случайность?
Из Web Crypto API: crypto.getRandomValues и, где поддерживается, crypto.randomUUID напрямую для v4. Math.random в этом инструменте не используется нигде.
Отправляется ли UUID куда-то при расшифровке?
Нет. Декодер читает версию, вариант и, для v1 и v7, встроенную метку времени полностью в вашем браузере. Значение, которое вы вставляете, никогда не покидает страницу.