Генератор UUID, ULID и nanoid
Инструмент создаёт уникальные идентификаторы для записей в базе данных, ключей, имён файлов и тестовых данных: UUID версий 4 и 7, ULID и короткие nanoid. Готовый идентификатор можно разобрать — узнать версию UUID и, если она хранит время, когда он был создан.
Как пользоваться
Выберите формат и количество — список обновится сразу; кнопка «Сгенерировать заново» создаёт новый набор с теми же настройками. Регистр и дефисы меняют только запись готовых UUID, сохраняя сами значения. Подсветка выделяет время, версию и цифру с битами варианта. Результат можно скопировать целиком или скачать текстовым файлом, по одному идентификатору в строке.
Чтобы разобрать идентификатор, вставьте его в поле «Разбор UUID и ULID»: подходят запись с дефисами и без них, в фигурных скобках и с префиксом urn:uuid:. Значения создаются в браузере через crypto.getRandomValues и не отправляются на сервер.
Идентификаторы
Подсветка: время, версия и цифра с битами варианта. У UUID v4 времени нет; у nanoid нет выделенных полей.
Разбор UUID и ULID
Вставьте идентификатор — разбор появится сразу.
Для генерации включите JavaScript. Пример UUID v4: 3b241101-e2bb-4255-8caf-4136c566a962 — цифра после второго дефиса показывает версию.
Какой формат выбрать
- UUID v4 — 122 случайных бита. Самый распространённый формат, его понимают все базы данных и библиотеки. В браузере и Node.js создаётся встроенным
crypto.randomUUID(). - UUID v7 — первые 48 бит хранят время в миллисекундах, остальное случайно. Новые значения больше старых, поэтому индекс базы данных растёт по порядку, а не вставляет записи в случайные места. Хороший выбор для первичного ключа.
- ULID — те же 48 бит времени и 80 случайных, но записанные 26 символами Base32 Крокфорда: короче UUID, без дефисов и без похожих символов I, L, O и U. Сортируется как строка.
- nanoid — короткая случайная строка: по умолчанию 21 символ из букв, цифр,
_и-, около 126 случайных бит. Подходит для адресов и коротких ссылок. Длину и алфавит можно изменить, но с меньшей длиной растёт риск совпадения.
В v7 и ULID несколько значений, созданных в одну миллисекунду, тоже идут по возрастанию: генератор увеличивает счётчик внутри миллисекунды, как описано в RFC 9562 и спецификации ULID.
Из чего состоит UUID
UUID — 128 бит, записанные 32 шестнадцатеричными цифрами в группах 8-4-4-4-12. Первая цифра третьей группы — версия, первая цифра четвёртой группы задаёт вариант: для стандартных UUID это 8, 9, a или b.
01937d5e-8a2c-7b41-9f3e-5c1d2a4b6e80
↑ ↑
версия 7 вариант RFC 9562Время создания можно прочитать из версий 1, 6 и 7 и из ULID. В v4 время не записано, а в v3 и v5 хранится хэш имени, по которому исходные данные не восстановить.
Вопросы и ответы
Могут ли два UUID v4 совпасть?
Теоретически да, практически нет: чтобы вероятность совпадения дошла до одной миллиардной, нужно около 1014 идентификаторов. Для UUID v4 и nanoid инструмент показывает оценку вероятности совпадения. В одном наборе UUID v7 и ULID повторы исключает монотонный генератор; между отдельными наборами совпадения возможны.
Можно ли сгенерировать UUID через Math.random()?
Не стоит: Math.random() не предназначен для непредсказуемых значений, и в некоторых средах его последовательность можно восстановить. Используйте crypto.randomUUID() или crypto.getRandomValues().
Не раскрывает ли UUID v7 время создания?
Раскрывает с точностью до миллисекунды — это видно в разборе выше. Если по идентификатору в адресе нельзя узнавать, когда создана запись, используйте v4 или nanoid.
Прописные или строчные буквы?
RFC 9562 рекомендует выводить UUID строчными буквами, но при чтении принимать оба варианта. Прописные встречаются в среде Microsoft, например в GUID.
Связанные инструменты
Хэши MD5 и SHA для сверки данных вычисляет инструмент «Хэши MD5 и SHA», а время в токенах авторизации показывает «Декодер JWT».