Как создать UUID v4

UUID v4 представляет собой случайный 128-битный идентификатор. Укажите количество от 1 до 100 и нажмите кнопку: браузер создаст отдельное значение для каждой строки. Переключатели регистра и дефисов меняют вид уже готового списка, а не запускают генерацию заново.
Стандартная текстовая запись состоит из 32 шестнадцатеричных знаков и 4 дефисов. Группы имеют длину 8-4-4-4-12, поэтому вся строка занимает 36 символов. Например, значение 919108f7-52d1-4320-9bac-f847db4148a8 соответствует UUID версии 4 и варианту IETF.
Генератор получает случайные данные через Web Crypto. Сначала он использует crypto.randomUUID(), а в совместимом запасном варианте заполняет 16 байтов методом crypto.getRandomValues() и выставляет служебные биты. Если безопасный источник недоступен, инструмент покажет ошибку. Подмены через Math.random() здесь нет.
Что означают части UUID
UUID хранит 16 октетов, то есть 128 бит. В версии 4 шесть битов заняты обозначением версии и варианта, а 122 бита остаются случайными. Это устройство закреплено в RFC 9562, актуальном стандарте UUID.
Вариантов UUID v4 = 2¹²² ≈ 5,3 × 10³⁶
Первый знак третьей группы всегда равен 4. Он обозначает версию. Первый знак четвёртой группы может быть 8, 9, a или b: так в шестнадцатеричной записи выглядят обязательные биты варианта 10. Остальные позиции заполняются случайными данными.
Дефисы облегчают чтение, но не добавляют информации. Компактный режим показывает те же 32 шестнадцатеричных знака слитно. Прописные и строчные буквы тоже обозначают одно значение: A и a равны как шестнадцатеричная цифра. Перед сохранением проверьте только формат, который ожидает база, API или конфигурационный файл.
UUID v4 не кодирует дату создания, адрес устройства, номер пользователя или смысл объекта. По одной строке нельзя определить, когда и где она появилась. Если системе нужен идентификатор, который естественно сортируется по времени, следует отдельно оценить UUID v7. Этот генератор намеренно создаёт только случайную версию 4.
Почему совпадение маловероятно, но ограничение всё равно нужно
После фиксации служебных битов остаётся 2¹²² случайных сочетаний. Это примерно 5,3 ундециллиона по короткой шкале, но практичнее сравнивать вероятность совпадения для конкретного размера набора. Для небольших вероятностей работает приближение задачи о днях рождения.
Вероятность совпадения ≈ n × (n − 1) ÷ (2 × 2¹²²)
Здесь n означает количество независимо созданных UUID. Формула оценивает шанс хотя бы одной совпавшей пары. Она предполагает равномерные случайные значения. Слабый генератор, программная ошибка или повторное использование сохранённой строки нарушают это условие и могут увеличить риск гораздо сильнее самой математики.
UUID называют практически уникальным, а не математически гарантированным. В рабочей базе всё равно задают ограничение UNIQUE или первичный ключ и корректно обрабатывают редкий конфликт. Так приложение защищено не только от невероятного случайного совпадения, но и от обычной ошибки импорта, повторной отправки запроса или копирования старого идентификатора.
Как браузер получает случайные байты
Интерфейс Web Crypto предоставляет криптографически стойкий генератор псевдослучайных значений. Спецификация рекомендует реализациям использовать проверенный генератор, засеянный качественной энтропией, например источником операционной системы. Алгоритмы randomUUID() и getRandomValues() описаны в Web Cryptography API.
Запасной путь не придумывает свой формат. Он получает ровно 16 случайных байтов, меняет старшие 4 бита седьмого байта на 0100 и старшие 2 бита девятого байта на 10. После этого байты переводятся в пары шестнадцатеричных цифр и разделяются дефисами.
Внутри одного запуска готовые строки складываются во множество. Если источник неожиданно вернул одинаковое значение, повтор не попадёт в список, а генератор запросит новое. Такая проверка полезна как защита реализации, но она не заменяет ограничение уникальности в вашей базе и не сравнивает результат с предыдущими запусками страницы.
Примеры для приложений, таблиц и тестов
1. Одна новая запись. Оставьте количество 1 и стандартный формат. Полученный UUID из 36 символов можно записать в поле идентификатора заказа, документа или локальной тестовой сущности.
2. Пакет из 20 объектов. Укажите 20, создайте список и скопируйте его целиком. Каждая строка станет отдельным UUID, поэтому пакет удобно вставить в столбец таблицы или тестовый набор.
3. Компактные 32 символа. Создайте UUID, затем выберите формат без дефисов. Строка 919108f7-52d1-4320-9bac-f847db4148a8 станет 919108f752d143209bacf847db4148a8, но случайное значение останется прежним.
4. Прописной формат. После генерации включите прописные буквы. Фрагмент 9bac превратится в 9BAC. Новый случайный UUID при этом не создаётся, поэтому можно сравнить два текстовых представления одной выдачи.
5. Миллион идентификаторов. При n = 1 000 000 оценка случайного совпадения составляет примерно 9,4 × 10⁻²⁶. Риск крошечный, однако поле базы всё равно стоит защитить уникальным индексом.
6. Миллиард идентификаторов. При n = 1 000 000 000 оценка вырастает примерно до 9,4 × 10⁻²⁰. Это всё ещё крайне мало при честных 122 случайных битах, но не доказывает безошибочность конкретной системы.
Где UUID уместен, а где нужен другой инструмент
UUID удобен, когда несколько приложений или устройств должны создавать идентификаторы без общего счётчика. Строка подходит для ключа сущности, идентификатора операции, имени тестового объекта или связи записей между сервисами. Она ничего не говорит человеку о содержимом, зато создаётся локально и не требует заранее спрашивать следующий номер у центрального сервера.
Для скидочной кампании лучше использовать генератор промокодов: он добавляет читаемый префикс, управляет длиной и исключает похожие символы. UUID специально неудобен для ручного диктования. Если покупателю приходится переписывать 36 знаков с чека, технический идентификатор оказался не на своём месте.
UUID также не стоит считать паролем или единственным доказательством доступа. Криптографическая случайность помогает сделать v4 непредсказуемым, но идентификатор часто попадает в адреса, логи, аналитику и резервные копии. Для секрета используйте отдельный генератор паролей, а право на действие проверяйте серверной авторизацией.
Если нужен понятный случайный номер в заданном диапазоне, откройте генератор случайных чисел. UUID решает другую задачу: выдаёт значение фиксированной 128-битной структуры, которое удобно переносить между языками программирования и системами.
Как хранить и передавать результат
Для обмена между системами безопаснее придерживаться стандартной записи с дефисами. Она сразу показывает границы групп и распознаётся библиотеками UUID. Компактный вид используйте только там, где формат явно разрешён. Добавлять фигурные скобки, префикс urn:uuid: или менять порядок байтов следует лишь по контракту конкретного API.
Хранить UUID можно как строку или в специальном 16-байтовом типе базы данных. Строка проще для просмотра, а бинарный или нативный тип обычно занимает меньше места и позволяет базе проверять формат. Выбор зависит от СУБД, драйвера и существующей схемы. Не преобразуйте значение в число JavaScript: 128 бит не помещаются в безопасный целочисленный диапазон Number.
Перед массовой вставкой создайте тестовый пакет, проверьте формат поля и попробуйте повторную запись одного UUID. Правильная схема должна отклонить дубль понятной ошибкой. После этого можно генерировать рабочий набор и импортировать его по одному значению в строке.
Частые вопросы
Ответы помогают отличить формат от значения, оценить риск совпадения и выбрать UUID только для тех задач, где технический идентификатор действительно нужен.
Что такое UUID v4?
Это 128-битный универсальный идентификатор, в котором версия, вариант и случайные данные расположены по стандартной схеме. После служебных битов в UUID v4 остаются 122 случайных бита.
Гарантирует ли UUID полное отсутствие совпадений?
Нет, абсолютной математической гарантии нет. При равномерных 122 случайных битах вероятность чрезвычайно мала, а рабочая база дополнительно должна запрещать повтор ключа ограничением уникальности.
Меняется ли UUID после переключения регистра или дефисов?
Нет. Переключатели форматируют сохранённую выдачу без повторной генерации. Прописные и строчные шестнадцатеричные буквы обозначают то же значение, а дефисы только разделяют группы.
Почему в третьей группе всегда стоит цифра 4?
Первый знак третьей группы содержит поле версии. Для UUID v4 соответствующие четыре бита имеют значение 0100, которое записывается шестнадцатеричной цифрой 4.
UUID и GUID означают одно и то же?
В прикладных интерфейсах GUID часто называют тем же форматом идентификатора. При бинарной передаче некоторые технологии Microsoft используют особый порядок байтов, поэтому контракт API всё равно нужно проверять.
Можно ли узнать дату создания по UUID v4?
Нет. Версия 4 заполнена случайными данными и не содержит времени создания. Для идентификаторов с временной сортировкой существуют другие версии, например UUID v7.
Можно ли использовать UUID как пароль или токен доступа?
Сам UUID является идентификатором, а не правилом авторизации. Даже случайный UUID может оказаться в URL, журнале или аналитике, поэтому секреты и проверку прав нужно проектировать отдельно.
Где создаются значения из этого генератора?
Они создаются в браузере через Web Crypto. Страница не подменяет безопасный источник функцией Math.random, а при отсутствии нужного API показывает ошибку.
Похожие калькуляторы
Возможно вам пригодятся ещё несколько калькуляторов по данной теме:
- Генератор промокодов. Задайте префикс, длину, алфавит и количество для пакета промокодов.
- Генератор паролей. Создайте сложный и надёжный пароль бесплатно с помощью онлайн-генератора из 8, 10, 12 или большего числа рандомных (случайных) символов.
- Рандомайзер: генератор случайных чисел. Выберите случайное число в нужном диапазоне для любых целей, в частности для розыгрышей и онлайн-лотерей в соцсетях.
- Визуальный редактор HTML. Редактируйте бесплатно и онлайн HTML-код, и сразу же смотрите внешний вид текста и страницы в режиме предпросмотра (WYSIWYG).
- Генератор QR-кода. Вставьте ссылку или текст. Готовый QR-код можно скопировать или скачать как PNG.
- Сумма прописью. Переведите сумму в виде цифр в сумму прописью - текстом. Сделайте расшифровку правильно для договоров и других документов.
- Хрономер: время чтения текста. Оцените, сколько времени займёт чтение или произнесение текста вслух. Просто введите текст в форму, и хронометраж рассчитается автоматически.
- Случайный выбор из списка. Добавьте варианты по одному в строке, укажите количество и выберите режим повторов.
- Перемешать список. Добавьте пункты по одному в строке и укажите, нужно ли сохранять одинаковые значения.
- Разделить список на группы. Добавьте участников, укажите число групп и выберите случайный либо исходный порядок.
Есть что добавить?
Напишите своё мнение, комментарий или предложение.