Генератор UUID
Создаёт идентификаторы двух версий. Четвёртая — привычная случайная, 122 бита случайности; такой идентификатор ни на что не намекает и ни с чем не связан.
Четвёртая версия и седьмая
Генератор выдаёт идентификаторы UUID четвёртой и седьмой версий по одному или пачками, с разделителями и без, в верхнем и нижнем регистре.
Четвёртая версия строится на случайных числах: 122 бита из 128 берутся случайно, остальные шесть отведены под номер версии и служебные метки. Вероятность совпадения двух таких идентификаторов пренебрежимо мала.
Седьмая версия начинается с метки времени в миллисекундах, а остаток заполняется случайно. Благодаря этому идентификаторы упорядочены по времени создания, что заметно ускоряет работу баз данных при вставке.
Разница практическая: случайные идентификаторы вставляются в индекс базы в произвольные места и вызывают перестроение страниц, а упорядоченные ложатся подряд в конец. На больших таблицах это разница в разы по скорости записи.

| Версия | Основа | Порядок |
|---|---|---|
| 1 | Время и MAC-адрес | По времени |
| 4 | Случайные числа | Произвольный |
| 7 | Время и случайность | По времени |
От MAC-адреса до упорядоченных идентификаторов
Идентификаторы такого вида появились в распределённой вычислительной среде в конце восьмидесятых, где требовалось создавать неповторяющиеся имена объектов без обращения к центральному серверу.
Первая версия включала MAC-адрес сетевой карты и время создания. Это исключало совпадения, но раскрывало, на какой машине и когда идентификатор создан, — по такому следу однажды нашли автора вредоносной программы.
Четвёртая версия отказалась от привязки к устройству и стала стандартом по умолчанию. Пространство в 122 бита настолько велико, что для вероятности совпадения в одну миллиардную нужно сгенерировать порядка ста триллионов значений.
Седьмая версия описана в обновлённой спецификации 2024 года и вобрала опыт нескольких неформальных решений, придуманных в разных компаниях для той же задачи упорядоченности.


Что выбрать и как хранить
Для новых систем берите седьмую версию. Она исключает совпадения и заодно даёт порядок, а издержки при вставке в базу заметно ниже, чем у четвёртой.
Храните идентификатор в базе двоичным полем из 16 байт вместо строки из 36 символов. Экономия места больше чем вдвое, а сравнение работает быстрее.
Генерируйте идентификатор на стороне, которая создаёт запись. Это позволяет собрать связанные объекты до записи в базу и отправить их одной операцией.
Проверяйте версию при разборе чужих идентификаторов. Номер версии закодирован в самой строке, и по нему сразу видно, чего ожидать от порядка и от содержимого.
Не применяйте идентификаторы там, где хватит обычного счётчика. Для внутренних таблиц с одной точкой записи автоинкремент проще, короче и быстрее.
Помните, что идентификатор не секрет. Он уникален, но предсказуемость седьмой версии по времени позволяет угадать соседние значения — для токенов доступа нужны другие механизмы.
Не собирайте идентификатор из предсказуемых частей вручную. Самодельные схемы на времени и счётчике совпадают при одновременной записи с двух серверов.
Приводите к одному регистру при сравнении. Спецификация предписывает выводить строчными, но принимать любой регистр, и системы, сравнивающие строки буквально, на этом спотыкаются.
Не выводите идентификаторы в адресную строку без нужды. Даже не будучи секретом, они попадают в журналы и в историю браузера вместе со ссылкой.
Проверьте, поддерживает ли ваша база отдельный тип для таких идентификаторов. Специальный тип экономит место и ускоряет сравнение по сравнению с текстовым полем.
Посчитать хеш строки поможет генератор хешей, а сгенерировать пароль — генератор паролей.
| Длина | 128 бит |
| Запись | 36 символов с дефисами |
| Версия 4 | случайная |
| Случайных бит | 122 |
| Версия 7 | время плюс случайность |
| Спецификация версии 7 | 2024 |
| В базе хранить | как 16 байт |
| Секретом не является | да |
Седьмая устроена иначе: первые 48 битов — это отметка времени в миллисекундах, поэтому идентификаторы сортируются по порядку создания.
Как пользоваться
Для первичного ключа в базе это принципиально: случайные v4 ложатся в индекс вразнобой и заставляют его постоянно перестраиваться, а упорядоченные v7 дописываются в конец. Случайность берётся у криптографического модуля браузера, тем же способом, что и для ключей шифрования. Вторая вкладка разбирает готовый идентификатор: показывает версию, вариант и, если это v7, восстанавливает дату создания.
- Четвёртая для общего случая, седьмая для ключей в базе.
- От одного до тысячи за раз.
- С дефисами, без них, в верхнем регистре, в скобках или как URN.
- Вторая вкладка показывает версию и дату создания для v7.
Частые вопросы
Идут ли идентификаторы v7 строго по возрастанию
В этом инструменте да. Одной отметки времени для этого мало: пачка из полусотни создаётся внутри одной миллисекунды, метка у всех совпадает, а остальные биты случайны — и порядок внутри миллисекунды получается произвольным. Стандарт RFC 9562 разрешает занять под счётчик двенадцать битов сразу за меткой времени, что здесь и сделано. Поэтому пачка любого размера идёт строго по возрастанию, и в индексе базы она ляжет подряд.
Чем UUID версии 7 лучше версии 4 для базы данных
Порядком. В v7 первые 48 битов — это время создания в миллисекундах, поэтому новые идентификаторы всегда больше старых. Когда такой ключ становится первичным, записи ложатся в конец индекса подряд. У случайного v4 каждая новая запись попадает в произвольное место дерева, страницы индекса дробятся, кэш перестаёт работать, и на больших таблицах вставка заметно замедляется. При этом v7 остаётся полноценным UUID и годится везде, где принимается обычный.
Раскрывает ли UUID v7 что-нибудь лишнее
Да, время создания: из идентификатора восстанавливается момент с точностью до миллисекунды. Если по идентификатору в адресе строки не должно быть понятно, когда объект создан, берите v4. Порядковость v7 работает в обе стороны: она полезна базе и она же выдаёт хронологию наружу.
Какова вероятность совпадения двух UUID
Пренебрежимо мала. В v4 случайных битов 122, то есть возможных значений порядка пяти на десять в тридцать шестой степени. Чтобы вероятность хотя бы одного совпадения дошла до одного процента, нужно сгенерировать около трёх на десять в семнадцатой степени идентификаторов. На практике совпадения случаются по другой причине — из-за плохого источника случайности, поэтому здесь используется криптографический модуль браузера.
Что означают версия и вариант
Версия — способ построения: 1 по времени и MAC-адресу, 4 случайный, 5 по хешу имени, 7 по времени и случайности. Она записана в первом знаке третьей группы. Вариант отвечает за раскладку битов и почти всегда равен единице по RFC 4122; он записан в первом знаке четвёртой группы, и у корректных идентификаторов там стоит 8, 9, a или b. Инструмент показывает оба поля при разборе.
Чем отличаются форматы записи
Только оформлением, значение одно и то же. Канонический вид — 36 знаков с дефисами. Без дефисов получается 32 знака, так UUID хранят в полях фиксированной длины. Фигурные скобки достались от систем Microsoft. Запись с приставкой urn:uuid: используется там, где нужен полноценный идентификатор ресурса. Регистр значения не имеет, но RFC 4122 предписывает выводить в нижнем.
Можно ли использовать UUID в адресе страницы
Можно, и это обычная практика для внутренних разделов: идентификатор не выдаёт ни порядковый номер записи, ни их общее количество, в отличие от числового id. Для публичных страниц, которые должны индексироваться, лучше человекочитаемый адрес: UUID в ссылке никому ни о чём не говорит и не помогает ни человеку, ни поиску.
Насколько это случайно
Случайность даёт crypto.getRandomValues — тот же источник, что применяется для криптографических ключей. Если его в браузере нет, генерация останавливается с сообщением: подставлять вместо него Math.random было бы опасно, потому что его последовательность предсказуема.
Расчёт идёт в браузере или на сервере?
Нет, всё создаётся в браузере.
Спросите нейросети об инструменте
Похожие инструменты
MD5, SHA-1, SHA-256, SHA-384, SHA-512 и CRC32 от текста или файла сразу. Есть HMAC с ключом, вывод в Base64 и сверка с эталоном, которая сама узнаёт алгоритм.
ОткрытьГенератор паролейПароль длиной до 64 символов с выбором наборов и отсевом похожих знаков. Показывает стойкость в битах и время перебора, делает до 50 паролей пачкой.
ОткрытьJWT-декодерРазбор токена JWT: заголовок, полезная нагрузка с расшифровкой стандартных полей, сроки выдачи и истечения в датах, проверка структуры. Без отправки на сервер.
ОткрытьСканер QR-кодаСчитывает QR-код и штрихкод камерой или с картинки прямо в браузере: ссылка, Wi-Fi, визитка, телефон и номер товара разбираются по полям.
ОткрытьТестер регулярных выраженийПодсветка совпадений и групп, режим замены и разбор самого шаблона по-русски: что делает каждый кусок и почему выражение не сработало.
ОткрытьСравнить два JSONПоказывает, чем отличаются два ответа API: какие поля появились, пропали и изменились, с путём вида data.items[0].price. Служебные поля можно исключить.
ОткрытьЕщё инструменты для кода и данных
Base64 и URL, форматтер и сравнение JSON, хеши, регулярные выражения, cron, подсети, UUID, QR-код и Unix-время — в разделе 42 инструмента.