Генератор UUID
РазработкаСоздаёт криптографически случайные UUID (RFC 4122 v4) с помощью crypto.randomUUID.
На этой странице
Что такое UUID?#
UUID (Universally Unique Identifier, универсальный уникальный идентификатор; в системах Microsoft называется также GUID) — это 128-битный идентификатор, представленный 32 hex-цифрами, сгруппированными по схеме 8-4-4-4-12, например c9bf1d4d-7d4f-4b3a-8b2c-1e5f6a7b8c9d. Идея проста, но мощна: генерировать идентификаторы по запросу, без центрального органа и без координации между машинами, и при этом вероятность совпадения двух из них фактически равна нулю. Именно это свойство делает UUID стратегией первичного ключа по умолчанию для распределённых баз, полем id почти у каждого ресурса JSON API, correlation ID, связывающими строки логов между микросервисами, и именами загруженных файлов-блобов.
Эта страница генерирует UUID версии 4 по RFC 4122 — вариант, построенный из случайных бит. Версия 4 — то, что нужно почти в каждом современном случае: она не несёт MAC-адрес машины (в отличие от v1), не встраивает иерархию пространств имён (в отличие от v3/v5) и полагается только на криптографическую случайность для уникальности. Можно сгенерировать один UUID или пакет до 10 000 сразу, в нижнем или верхнем регистре, целиком в вашем браузере.
Две из 32 hex-цифр на самом деле не случайны — они объявляют собственный тип UUID. Ниббл version в позиции 14 (первый символ третьей группы) всегда равен 4, а ниббл variant в позиции 19 (первый символ четвёртой группы) — всегда 8, 9, a или b. Поэтому каждое значение, которое вы видите на этой странице, читается как xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx. Эти две фиксированные позиции попутно служат самоописывающимся отпечатком: любая строка, подходящая под этот шаблон, — UUID v4, и короткой регуляркой можно провалидировать миллионы таких строк.
Как пользоваться#
- Установите числовое поле Количество вверху — сколько UUID вам нужно, от 1 до 10 000. Поле ограничено этим диапазоном.
- Отметьте Верхний регистр, если нужен вывод только заглавными буквами (некоторые устаревшие системы и соглашения Microsoft GUID предпочитают
C9BF1D4D-…). Оставьте снятым для нижнего регистра, который используют большинство современных стеков. - Нажмите Создать. Значения появятся в моноширинной области вывода, по одному на строку.
- Нажмите Копировать, чтобы скопировать весь пакет в буфер обмена — готово к вставке в SQL
INSERT, CSV, тестовый фикстур или seed-скрипт. - Нажимайте Создать снова в любое время, когда нужна свежая порция — каждое нажатие извлекает новые случайные биты и выдаёт значения, которых раньше не существовало.
Ключевые возможности#
- Настоящая криптографическая случайность. В защищённом контексте используется
crypto.randomUUID()браузера, а в качестве запасного варианта —crypto.getRandomValuesс rejection sampling по битам version и variant; это неMath.random(), который непригоден для идентификаторов. - Пакетная генерация. До 10 000 UUID одним щелчком, по одному на строку, — можно засеять базу или файл-фикстур без собственного скрипта.
- Нижний или верхний регистр. Один переключатель покрывает оба соглашения.
- Соответствие RFC 4122 v4. Ниббл version всегда
4, а ниббл variant всегда8/9/a/b, поэтому каждое значение проходит стандартную регулярку v4. - 100 % на стороне клиента. Без бэкенда, без телеметрии. Сгенерированные здесь UUID нигде не записываются — они ваши с момента появления.
Разбор примера#
Нажмите Создать, оставив Количество по умолчанию 5, а Верхний регистр снятым — и получите пять строк наподобие (ваши значения будут другими — они случайные):
7f3a9c2e-1b4d-4e8f-a6c3-9d2b8e1f0a47
2c8d4f1a-9e3b-47a2-8c6d-1f5e9a0b3c28
a1b2c3d4-e5f6-4789-abcd-ef0123456789
9e8d7c6b-5a4f-3210-ba98-76543210fedc
4f3e2d1c-0b9a-8765-4321-fedcba987654
Присмотритесь к третьей группе в любой строке: она всегда начинается с 4. Посмотрите на четвёртую группу: она всегда начинается с 8, 9, a или b. Эти два символа не случайны — это маркеры version и variant, и именно благодаря им однострочный валидатор может подтвердить, что строка — настоящий UUID v4.
Если отметить Верхний регистр и сгенерировать снова, выйдет та же форма, но заглавными буквами, например 7F3A9C2E-1B4D-4E8F-A6C3-9D2B8E1F0A47 — те же биты, просто записанные для систем, ожидающих GUID в верхнем регистре.
FAQ#
Насколько уникален UUID v4 на самом деле? Возможны ли дубликаты?#
Числа быстро становятся абсурдными. Один UUID v4 несёт 122 бита настоящей случайности (128 минус 4 бита version и 2 бита variant). Чтобы получить хотя бы 50 % шанс одного совпадения, нужно сгенерировать около 2,71 × 10^36 UUID — это миллиард миллиардов миллиардов в секунду дольше возраста Вселенной. Для любой реалистичной базы или системы совпадения можно считать невозможными и не проверять их.
Безопасно ли использовать эти UUID как первичные ключи БД?#
Да — версия 4 самый частый выбор именно потому, что не требует координации. Единственное предупреждение — фрагментация индекса: чисто случайные ключи разбрасываются по B-дереву, поэтому для таблицы PostgreSQL или MySQL с очень интенсивной записью может подойти вариант UUIDv7 (сортировка по времени). Для идентификаторов ресурсов на уровне приложения, correlation ID и большинства таблиц обычного v4 достаточно.
Почему бы просто не собрать UUID из Math.random()?#
Потому что Math.random() криптографически нестойок — его выход может быть достаточно предсказуемым, чтобы злоумышленник, наблюдая несколько ID, мог угадать остальные. Этот инструмент намеренно использует crypto.randomUUID() (и запасной вариант crypto.getRandomValues с корректной обработкой version/variant), черпающий случайность из CSPRNG операционной системы. Для всего, что идентифицирует пользователя, сессию или ресурс, это различие существенно.
Можно ли здесь сгенерировать UUID версии 1, 5 или по имени?#
Нет — эта страница намеренно только для v4, поскольку v4 покрывает подавляющее большинство реальных случаев и не требует ничего, кроме источника случайности. Если вам нужен UUID v5 по имени (детерминированный из имени и пространства имён) — это другая задача, и ей место в коде вашего приложения или в специализированном инструменте.