Что такое UUID?
UUID (Universally Unique Identifier, универсальный уникальный идентификатор) — это 128-битная метка, которая позволяет однозначно идентифицировать информацию в компьютерных системах без централизованного управления. В стандартной текстовой форме это 32 шестнадцатеричных символа, сгруппированных как 8-4-4-4-12 и разделённых дефисами, например 550e8400-e29b-41d4-a716-446655440000. Формат определён в RFC 4122, который в 2024 году был заменён на RFC 9562.
Вероятность совпадения двух независимо созданных UUID ничтожно мала, поэтому они стандартно используются как первичные ключи в базах данных, идентификаторы запросов и транзакций, в распределённых системах и везде, где разным системам нужно придумывать ID, которые никогда не пересекутся.
Терминология: в продуктах Microsoft та же структура называется GUID. UUID и GUID взаимозаменяемы — в GUID используется немного другой вариант поля variant.
Структура UUID
Если читать слева направо, каждый UUID несёт собственную метаинформацию. Третья группа начинается с цифры версии, а четвёртая кодирует вариант:
- 32 бита
time_lowв v1 · случайные данные в v4 - 16 бит
time_midв v1 · случайные данные в v4 - 16 бит сначала идёт цифра версии — здесь
4 - 16 бит сначала идут биты варианта —
8,9,aилиb - 48 бит узел в v1 · случайный остаток в v4
Версии UUID
Каждая версия строится из разных входных данных. Выберите ту, которая соответствует вашей задаче:
Случайный
122 бита из криптографически стойкого источника. Вариант по умолчанию для универсальных уникальных ID: он ничего не сообщает об устройстве или времени создания.
Упорядоченный по времени
48-битная метка времени Unix в миллисекундах и случайные биты после неё. Сортируется хронологически и эффективно индексируется в B-деревьях — современная замена v1.
Время + узел
Григорианская метка времени, последовательность часов и идентификатор узла. Сортируется по времени, но может раскрывать, когда и (традиционно) где было создано значение.
На основе имени (SHA-1)
Хеш SHA-1 от UUID пространства имён и имени. Детерминированный, предпочтительный вариант для новых именных идентификаторов.
На основе имени (MD5)
Хеш MD5 от пространства имён и имени. Сохранён для совместимости с существующими системами: MD5 больше не считается устойчивым к коллизиям.
Какую версию выбрать?
На практике выбор сводится к одному вопросу: идентификатор должен быть случайным, сортируемым по времени или выведенным из имени?
| Версия | Как строится | Сортировка по времени | Типичное применение |
|---|---|---|---|
v4 |
122 случайных бита | Нет | Надёжный выбор по умолчанию |
v7 |
48-битная метка времени + 74 случайных бита | Да | Первичные ключи, журналы событий, всё, что сортируется по времени |
v1 |
60-битная метка времени + последовательность часов + узел | Да | Устаревшие системы и трассировка запросов |
v5 |
SHA-1 от пространства имён и имени | Нет | Стабильные ID из домена, URL или пути |
v3 |
MD5 от пространства имён и имени | Нет | Существующие системы на базе v3 |
Как пользоваться генератором
- Выберите версию в списке. v4 — безопасный вариант по умолчанию, v7 — лучший выбор для ключей базы данных.
- Для v3 или v5 укажите пространство имён и имя, например DNS и
example.com. - Задайте количество UUID (от 1 до 1000) и при необходимости включите верхний регистр, дефисы или фигурные скобки.
- Нажмите Сгенерировать UUID. Скопируйте одно значение кнопкой в строке, всё сразу — кнопкой Копировать всё, либо выгрузите набор в .txt или .csv.
Генератор запоминает настройки в этом браузере, поэтому в следующий раз страница откроется с той же конфигурацией.
Как создать UUID в коде
Обычно библиотека не нужна — в современных платформах поддержка UUID уже встроена в стандартную библиотеку.
// Браузер — встроено в Web Crypto API (v4)
const id = crypto.randomUUID();
// Node.js 16+
const { randomUUID } = require("node:crypto");
console.log(randomUUID());
import uuid
print(uuid.uuid4()) # случайный
print(uuid.uuid1()) # время + узел
print(uuid.uuid5(uuid.NAMESPACE_DNS, "example.com")) # на основе имени
uuidgen # Linux / macOS
node -e "console.log(crypto.randomUUID())"
python -c "import uuid; print(uuid.uuid4())"
Базы данных тоже умеют их создавать: в PostgreSQL 13+ есть gen_random_uuid(), в MySQL — UUID(), в SQL Server — NEWID(), в Oracle — SYS_GUID().
Где применяются UUID
- Ключи баз данных — уникальные строки, которые любой клиент может создать без обращения к серверу.
- API и микросервисы — идентификаторы запросов, сопровождающие вызов через границы сервисов.
- Распределённые системы — координатор не нужен, ID можно создавать офлайн или на периферии.
- Имена файлов и объектов — неповторяющиеся имена для загрузок, экспортов и кеша.
- Тестовые данные — реалистичные уникальные наборы для разработки и QA.
- Ключи идемпотентности — позволяют повторить платёж или задачу без дублирования.
Приватность и безопасность
Да, инструмент приватный. Каждое значение на этой странице создаётся на вашем устройстве криптографически стойким генератором случайных чисел браузера — серверной части и загрузки данных нет. Поэтому генератор подходит для прототипирования, локальной разработки, документации и создания неконфиденциальных идентификаторов.
Не используйте публично сгенерированный UUID как секрет. UUID — это идентификатор, а не пароль и не API-ключ: он не рассчитан на то, что его невозможно угадать. Секреты создавайте отдельным криптографическим генератором.
Частые вопросы
Могут ли два UUID совпасть?
В версии v4 используется 122 случайных бита, поэтому случайное совпадение практически невозможно при любой реальной нагрузке: чтобы вероятность коллизии достигла 50%, нужно создать порядка 2,7 × 1018 значений. Версии v1 и v7 привязаны к времени и узлу, а v3/v5 детерминированы для заданного входа, поэтому разные входные данные никогда не дают одинаковый UUID.
Какую версию UUID использовать?
Для большинства случайных идентификаторов используйте v4. Используйте v7, если значения будут храниться в базе данных с индексом: метка времени в начале сохраняет последовательность вставок и компактность индекса. Используйте v3 или v5, когда одному входу всегда должен соответствовать один и тот же UUID — например для стабильных идентификаторов, выведенных из доменного имени.
Генератор бесплатный? Есть ли ограничения?
Да, он бесплатный, без учётной записи и без суточных лимитов. За одно нажатие можно создать до 1000 UUID; в интерфейсе для удобства показаны первые 500, но копирование и скачивание всегда включают весь набор.
UUID чувствителен к регистру?
Нет. Шестнадцатеричные цифры принято записывать в нижнем регистре, но инструменты разбирают верхний и нижний регистр одинаково. Здесь можно выбрать нужный вариант оформления.
Нужно ли что-то устанавливать?
Нет. Это статическая страница, которая работает в любом современном браузере, в том числе офлайн после загрузки: без приложений, учётной записи и зависимостей.
Можно ли использовать эти UUID в коммерческих проектах?
Да. Созданные идентификаторы ничем не защищены авторским правом и не требуют лицензии, а инструмент бесплатен для личного и коммерческого использования. О гарантиях уникальности см. дисклеймер в подвале сайта.