Генератор UUID
Генерация уникальных идентификаторов по стандарту RFC 4122
Нажмите "Сгенерировать UUID" для начала
Что такое UUID?
UUID, или Universally Unique Identifier, — это 128-битный идентификатор для записей, объектов, сессий, файлов, устройств, сообщений и других сущностей в распределенных системах. Привычная текстовая форма состоит из шестнадцатеричных групп по шаблону 8-4-4-4-12. UUID удобен, когда несколько серверов, клиентов или сервисов должны создавать ID без обращения к центральной базе за следующим последовательным номером. Разные версии используют случайность, время или хэш от пространства имен, поэтому отличаются приватность, сортируемость, предсказуемость и риск коллизий. Инструмент помогает быстро генерировать и проверять UUID, но сам идентификатор не является правом доступа или секретом. При совместном использовании нужно заранее прояснить входные данные, допущения и ожидаемый результат, чтобы вывод не поняли неверно.
Как пользоваться
Шаги генерации
- Выберите версию UUID (v1, v4 или Nil)
- Укажите количество генерируемых идентификаторов (1–100)
- Выберите регистр вывода (верхний или нижний)
- Выберите формат (с дефисами, без дефисов или в фигурных скобках)
- Нажмите кнопку «Сгенерировать» для создания идентификаторов
Горячие клавиши
- Ctrl + GСгенерировать UUID
- Ctrl + Shift + CСкопировать все
Примечания об идентификаторах
- UUID v4 — обычный выбор для случайных клиентских идентификаторов: он не содержит информации о времени или устройстве.
- Не используйте UUID в качестве секретов. Они лишь идентифицируют записи и не заменяют токены аутентификации или ключи доступа.
Применение
Технический принцип
UUID — это 128-битный идентификатор в стандартном формате 8-4-4-4-12, всего 36 символов (включая 4 дефиса). 128 бит делятся на: time-low (32 бита), time-mid (16 бит), version-and-time-high (16 бит, старшие 4 бита — версия), variant-and-clock-seq (16 бит, старшие 2–3 бита — вариант) и node (48 бит). RFC 4122 определяет пять версий, от v1 до v5. v1 построен на основе 60-битной метки времени (разрешение 100 наносекунд, отсчёт от 15 октября 1582 года), 48-битного MAC-адреса и 14-битной последовательности часов. Теоретически он сортируем по времени генерации, но раскрывает идентификацию машины и время создания. v4 — наиболее широко используемая версия: 122 бита заполнены криптографически стойким случайным источником, а также фиксированные биты версии (4) и варианта (10). Вероятность коллизии — центральный вопрос в дизайне UUID. v4 имеет 122 бита случайного пространства, и по парадоксу дней рождения потребуется генерация миллиарда UUID в секунду на протяжении 85 лет непрерывно, чтобы достичь 50% вероятности одной коллизии, что на практике более чем достаточно. Новая версия v7 размещает метку времени первыми, а случайные биты — последними, обеспечивая баланс между уникальностью и временным упорядочиванием, и лучше подходит для первичных ключей баз данных.
- UUID v4: 122 случайных бита с фиксированным битом версии 4 и битом варианта 10; подходит практически для любого сценария и не раскрывает приватных данных
- UUID v1: 60-битная метка времени + 48-битный MAC + 14-битная последовательность часов; сортируем по времени, но раскрывает отпечаток машины — используйте с осторожностью
- UUID v7: метка времени первыми, случайные биты последними; черновой стандарт 2024 года, разработанный специально для первичных ключей баз данных
- Вероятность коллизии: случайное пространство v4 составляет 2^122, и для 50% вероятности одной коллизии требуется генерация миллиарда UUID в секунду на протяжении 85 лет
- Nil UUID: все нули 00000000-0000-0000-0000-000000000000, обычно используется как заполнитель или значение по умолчанию
- Варианты формата: помимо стандартного 8-4-4-4-12 существует 32-символьная форма без дефисов, форма в {фигурных скобках} и URN-форма (urn:uuid:...)
Примеры
Стандартный формат UUID v4 (случайный)
550e8400-e29b-41d4-a716-446655440000
Цифра версии (13-й hex-символ): 4 -> v4, случайный
Биты варианта (17-й hex-символ): 8/9/a/b -> вариант RFC 4122
Применение: первичные ключи в БД, ID запросов, ID ресурсов - выбор по умолчанию, когда порядок не важен
RFC: раздел 4.4 RFC 4122 определяет генерацию v4Формат UUID v1 (timestamp + MAC)
c232ab00-9414-11ec-b909-0242ac120002
Цифра версии: 1 -> v1, на основе времени
Примечание: содержит timestamp генерации в time_low; последние 12 hex-символов - идентификатор узла (часто MAC)
Применение: когда нужны сортируемые ID или детерминированный источник на хост, но имейте в виду, что MAC раскрывает идентификатор хоста
RFC: раздел 4.1 RFC 4122 определяет схему v1Пакетная генерация 5 ID версии v4
a1b2c3d4-e5f6-4789-a012-3456789abcde
f7e8d9c0-b1a2-43f4-95e6-7d8c9b0a1e2f
3c4d5e6f-7a8b-49c0-9d1e-2f3a4b5c6d7e
8e9f0a1b-2c3d-44e5-bf6a-7b8c9d0e1f2a
5f6a7b8c-9d0e-45f1-a2b3-c4d5e6f7a8b9
Примечание: каждый ID независимо берётся из crypto.getRandomValues; вероятность коллизии для 2^122 ID пренебрежимо мала согласно Приложению B RFC 4122Часто задаваемые вопросы
Что такое UUID?
Universally Unique Identifier — это 128-битное значение (RFC 4122/9562), обычно записываемое в виде 32 шестнадцатеричных цифр по схеме 8-4-4-4-12, например 550e8400-e29b-41d4-a716-446655440000. Разные версии кодируют время, случайные данные или хеши; их цель — быть уникальными между системами без центрального координатора.
В чём разница между UUID v1, v4 и v7?
v1 смешивает MAC-адрес хоста и 100-нс метку времени (хорошее упорядочение, но утечка данных хоста). v4 — чисто случайный (122 бита энтропии, без упорядочения). v7 (RFC 9562) ставит 48-битную Unix-ms метку в старшие биты, а младшие — случайные: сортируется как v1, но без утечки MAC. v7 — современный выбор по умолчанию для ключей БД.
UUID действительно уникальны?
Статистически — да. Если генерировать миллиард v4 UUID в секунду в течение 100 лет, вероятность коллизии будет около 50% (граница парадокса дней рождения). Для всех практических систем UUID можно считать уникальными без всякой координации.
UUID случайны и непредсказуемы?
v4 UUID — случайные и фактически непредсказуемые (122 бита энтропии). v1 UUID совсем не случайны — они раскрывают MAC и время хоста, поэтому не используйте v1 как security-токен. Префикс времени v7 тоже предсказуем; непредсказуемы только хвостовые случайные биты.
Стоит ли использовать UUID в качестве первичного ключа БД?
Это работает, но с компромиссами. Случайные v4 UUID вызывают фрагментацию B-tree в БД, кластеризующих по первичному ключу (MySQL InnoDB), и ухудшают производительность вставки на масштабе. Сортируемые v7 UUID этого избегают. Auto-increment целые всё ещё компактнее и быстрее — UUID берите там, где важна распределённая генерация.
Генерация UUID выполняется в браузере?
Да. Страница использует crypto.randomUUID (или crypto.getRandomValues для старых браузеров) — часть Web Crypto API. На сервер ничего не отправляется, а перезагрузка страницы даёт свежий поток энтропии.
Почему некоторые UUID почти одинаковы в начале?
v1 и v7 кодируют время в начальных символах, поэтому UUID, сгенерированные в одну миллисекунду, имеют общий префикс и различаются только в хвосте. Именно это и делает их естественно сортируемыми. v4 — случайные и такого свойства не имеют.