Что такое UUID?
UUID (Universally Unique Identifier, универсальный уникальный идентификатор) представляет собой 128-битное число, которым помечают строки базы данных, файлы, API-запросы и устройства, не запрашивая у центрального сервера следующий свободный ID. Он записывается как 32 шестнадцатеричные цифры в пяти группах по схеме 8-4-4-4-12, например f47ac10b-58cc-4372-a567-0e02b2c3d479.
UUID описаны в RFC 9562 (2024), который заменил более старый RFC 4122 и добавил версии 6, 7 и 8. Первая шестнадцатеричная цифра третьей группы указывает версию (4 в 4372 выше), а первая цифра четвёртой группы показывает вариант (8, 9, a или b у стандартных UUID).

Версии UUID простыми словами
Все версии заполняют одни и те же 128 бит по-разному. Вот те, с которыми вы действительно столкнётесь:
122 случайных бита. Внутри нет никакого смысла, поэтому нечему утечь. Используется по умолчанию в большинстве языков (crypto.randomUUID(), uuid.uuid4(), Guid.NewGuid()).
48-битная метка Unix-времени в миллисекундах, за которой идут случайные биты, поэтому новые ID сортируются после старых. RFC 9562 рекомендует её вместо v1 и v6.
60-битная метка времени, последовательность часов (clock sequence) и 48-битный идентификатор узла, которым изначально был MAC-адрес компьютера. Наш генератор вместо него использует случайный узел.
UUID пространства имён плюс имя, хешированные с помощью SHA-1 (v5) или MD5 (v3). Одни и те же входные данные всегда дают один и тот же UUID. Лучше выбирать v5.
Поля версии 1, переставленные так, чтобы ID сортировались по времени. В основном это мост для систем, которые уже используют v1.
Все нули (00000000-0000-0000-0000-000000000000) или все f. Используются как заполнители со значением «нет значения» или «конец диапазона».
Advertisement
Как сгенерировать UUID
v4 для случайного ID, v7, если ID попадут в индекс базы данных или должны сортироваться по времени создания, v5, если одно и то же имя всегда должно давать один и тот же UUID.
Генерируйте 1, 10, 100 или до 1000 штук за раз. Каждый UUID берётся из криптографически стойкого генератора случайных чисел браузера.
Стандартный в нижнем регистре, {фигурные скобки} и верхний регистр для GUID в стиле Windows, 32 символа без дефисов или URN вида urn:uuid:.
Скопируйте один UUID или весь список либо скачайте его файлом .txt. Адрес страницы сохраняет ваши настройки, поэтому их можно добавить в закладки.
UUID и GUID: есть ли разница?
Microsoft называет то же самое GUID (Globally Unique Identifier). GUID, созданный через Guid.NewGuid() в .NET или New-Guid в PowerShell, является стандартным UUID версии 4.
Заметная разница только в том, как их обычно записывают: инструменты Windows часто показывают GUID в верхнем регистре и в фигурных скобках, например {F47AC10B-58CC-4372-A567-0E02B2C3D479}. Выберите формат «GUID с фигурными скобками» и отметьте «Верхний регистр», чтобы получить именно такой вид. Внутри Windows и .NET хранят первые три группы в порядке байтов little-endian, поэтому исходные 16 байт отличаются от порядка байтов UUID, даже если текст полностью совпадает. Некоторые очень старые COM GUID используют собственные биты варианта Microsoft, и декодер выше это отмечает.
Advertisement
UUID v4 или v7: что выбрать?
Оба варианта надёжно работают как уникальные ID. Разница проявляется, когда вы храните миллионы таких ID в индексе базы данных.
Используйте v7 для первичных ключей. Каждый новый UUID v7 больше предыдущего, поэтому вставки попадают в конец индекса B-tree, а не в случайные места, и в PostgreSQL и MySQL индексы остаются компактными, а вставки быстрыми. Исключение составляет SQL Server: он сортирует значения
uniqueidentifierсначала по последним шести байтам, поэтому там v7 такого преимущества не даёт.Используйте v4, когда ID не должен ничего раскрывать. UUID v7 содержит время своего создания с точностью до миллисекунды; любой, кто его видит, может прочитать это время с помощью декодера выше.
Используйте v5 для стабильных ID на основе имён, например один UUID на каждое доменное имя или URL, чтобы все системы вычисляли одно и то же значение без общей таблицы.
Не используйте v1 в новых проектах. Классический v1 встраивает MAC-адрес машины и время создания; RFC 9562 рекомендует вместо него v7.
Могут ли два UUID совпасть?
Теоретически да, практически нет. У UUID версии 4 есть 122 случайных бита, то есть около 5,3 × 10^36 возможных значений. Чтобы вероятность хотя бы одного дубликата достигла 50%, нужно сгенерировать примерно 2,7 квинтиллиона (2,7 × 10^18) UUID. Это миллиард UUID каждую секунду на протяжении примерно 86 лет.
Реальный риск кроется в сломанном генераторе случайных чисел, а не в математике. Этот инструмент использует crypto.getRandomValues(), криптографически стойкий источник браузера, а v7 ведёт счётчик, поэтому UUID, созданные в одну и ту же миллисекунду, всё равно правильно сортируются и никогда не повторяются.
Advertisement
Декодирование UUID: версия, вариант и метка времени
Откройте вкладку Декодировать и вставьте один или несколько UUID, по одному в строке, в стандартном виде, в фигурных скобках, с префиксом urn:uuid: или в 32-символьной форме. Для каждого вы увидите, корректен ли он, его версию и вариант, а для v1, v6 и v7 также дату и время создания.
Для UUID v1 и v6 декодер также показывает идентификатор узла и то, похож ли он на настоящий MAC-адрес или на случайное значение. Так можно быстро проверить, не раскрывают ли старые ID в вашей системе аппаратные адреса.
Как сгенерировать UUID в коде
Большинство популярных языков и баз данных умеют создавать UUID без дополнительных пакетов. Поддержка версии 7 появилась недавно: её добавили Python 3.14, PostgreSQL 18, .NET 9 и Go 1.27.
crypto.randomUUID()
// 'f47ac10b-58cc-4372-a567-0e02b2c3d479' (версия 4)import uuid
uuid.uuid4() # случайный
uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com') # на основе имени, всегда одинаковый
uuid.uuid7() # Python 3.14+SELECT gen_random_uuid(); -- версия 4 (PostgreSQL 13+)
SELECT uuidv7(); -- версия 7 (PostgreSQL 18+)Guid.NewGuid() // версия 4
Guid.CreateVersion7() // версия 7 (.NET 9+)
# PowerShell
New-Guiduuidgen # случайный UUID (macOS выводит в верхнем регистре)
uuidgen --time # версия 1 (util-linux)
cat /proc/sys/kernel/random/uuid # ядро LinuxUUID.randomUUID() // Java, версия 4
uuid.NewV4() // стандартная библиотека Go 1.27+, версия 4
uuid.NewV7() // Go 1.27+, версия 7
// старые версии Go: github.com/google/uuid (uuid.New, uuid.NewV7)Advertisement
Другие инструменты для разработчиков
Другие бесплатные инструменты для разработчиков и системных администраторов, которые работают прямо в браузере: