Что это за инструмент?
UUID (универсальный уникальный идентификатор) — это 128-битный идентификатор, записываемый в виде 36 символов, например: 550e8400-e29b-41d4-a716-446655440000. UUID версии 4 генерируются на основе случайных данных, что делает вероятность коллизий настолько маловероятной, что на практике её можно игнорировать: можно генерировать миллиард UUID в секунду на протяжении десятилетий, прежде чем появление дубликата станет вероятным.
UUID используются в качестве первичных ключей в базах данных, идентификаторов запросов для отслеживания, имен файлов, ключей API, а также везде, где требуется идентификатор, не требующий согласования с центральным органом.
Зачем его использовать?
- Криптографически безопасно: используется функция crypto.randomUUID(), а не уязвимая функция Math.random().
- Массовое создание — до 500 UUID за раз, по одному в строке, готовые к вставке.
- Варианты с использованием заглавных букв и без дефисов для систем с особыми требованиями к форматированию.
- Работает в автономном режиме в вашем браузере; UUID никуда не отправляются.
- Бесплатно и мгновенно, без входа в систему.
Как использовать
- Выберите необходимое количество UUID (от 1 до 500).
- При желании установите флажок «Заглавные буквы» или «Удалить дефисы».
- Нажмите «Сгенерировать UUID».
- Нажмите «Копировать всё», чтобы скопировать весь список.
Пример
Ввод
Count: 3Результат
f47ac10b-58cc-4372-a567-0e02b2c3d479
9c858901-8a57-4791-81fe-4c455b099bc9
16fd2706-8baf-433b-82eb-8c7fada847daКаждый UUID генерируется независимо на основе защищенных случайных данных.
Типичные сценарии использования
- Первичные ключи базы данных: UUID позволяют генерировать допустимый идентификатор до вставки записи, что удобно для приложений, работающих в режиме «offline-first», или в случаях, когда клиенту необходимо обратиться к записи до того, как сервер подтвердит её.
- Распределенные системы: несколько серверов могут генерировать идентификаторы независимо друг от друга без какой-либо координации и без риска коллизий — в отличие от целых чисел с автоинкрементом, для которых требуется единый авторитетный источник данных.
- Ключи идемпотентности: отправка одного и того же UUID при повторном запросе к API позволяет серверу распознать и безопасно игнорировать дубликат запроса.
- Тестовые наборы и исходные данные: массовое создание сотен уникальных идентификаторов за один раз для заполнения тестовой базы данных или имитации ответов API.
- Ключи списков в React/Vue: если у элементов списка пока нет естественного уникального идентификатора, в процессе разработки в качестве стабильного ключа можно использовать сгенерированный UUID.
Ограничения, о которых следует знать
UUID нельзя сортировать по времени создания — благодаря случайному характеру v4 новые идентификаторы не располагаются рядом друг с другом в индексе базы данных, что может негативно повлиять на производительность вставки при работе с большими объёмами данных (именно поэтому в качестве альтернативы существует UUID v7, упорядоченный по временным меткам). Если вам требуется как упорядочение по времени, так и уникальность, то v7 или идентификатор в стиле Snowflake подойдут лучше, чем v4.
Сам по себе UUID не является учетными данными для обеспечения безопасности. Его невозможно угадать в том смысле, что невозможно предсказать один UUID на основе другого, но он никогда не разрабатывался с учетом таких функций, как возможность аудита, срок действия или отзыв, которые необходимы для настоящего токена аутентификации — для этих целей следует использовать специальную библиотеку токенов сеанса/API.
Как на самом деле работает принцип случайности
UUID версии 4 состоит из 122 битов, которые являются подлинно случайными (остальные 6 битов являются фиксированными и обозначают версию и вариант в соответствии со спецификацией RFC 4122). Данный инструмент получает эти случайные значения из функции crypto.getRandomValues() через Web Crypto API браузера — тот же базовый источник, который используется для ключей TLS и других криптографических операций, а не гораздо более слабую функцию Math.random(), которая настолько предсказуема, что некоторые старые библиотеки UUID, построенные на ней, подвергались критике за генерацию идентификаторов, которые можно угадать.
Чтобы конкретизировать вероятность коллизии: при использовании 122 случайных битов потребуется сгенерировать около 2,71 квинтиллиона UUID, прежде чем вероятность появления хотя бы одной коллизии достигнет 50% — это на несколько порядков больше, чем когда-либо сможет создать любое отдельное приложение. Именно поэтому UUID v4 на практике считается фактически свободным от коллизий, хотя с математической точки зрения это не является невозможным.
Часто задаваемые вопросы
Могут ли два сгенерированных UUID совпадать?
Теоретически — да, на практике — нет. UUID версии 4 состоит из 122 случайных битов. Вероятность коллизии остается пренебрежимо малой даже после генерации триллионов таких UUID — их можно смело считать уникальными.
В чём разница между версиями UUID?
v1 основан на временной метке и MAC-адресе (происходит утечка информации), v4 является полностью случайным (наиболее распространённый вариант), v5 получается из имени путём хеширования (детерминированный), а v7 — это случайный генератор с временной упорядоченностью (подходит для индексов баз данных). Данный инструмент генерирует v4.
Являются ли эти UUID достаточно безопасными для использования в качестве токенов?
Они используют криптографически безопасный источник случайных чисел, который намного лучше, чем Math.random(). Для токенов сеанса по-прежнему предпочтительны специальные генераторы токенов с более высокой энтропией, однако для идентификаторов вполне подойдут UUID версии 4.
UUID — это то же самое, что и GUID?
Да. GUID (Globally Unique Identifier) — это название, данное компанией Microsoft тому же 128-битному формату. Эти термины являются взаимозаменяемыми.
Создаваемые UUID сохраняются или регистрируются в журнале?
Нет. Генерация UUID происходит локально в вашем браузере. Никакие данные не передаются, не сохраняются и не регистрируются — каждый UUID, который вы видите, существует только на вашем экране.