Генератор UUID

Варианты формата

Количество генерируемых

число

Бесплатный онлайн генератор UUID/GUID/ULID/NanoID, поддерживает 5 форматов уникальных ID, массовую генерацию до 100, настраиваемое форматирование и проверку UUID. Готов к использованию мгновенно — идеально для первичных ключей баз данных и создания тестовых данных.

Похожие

Что такое UUID?

UUID (Universally Unique Identifier) — это 128-битный идентификатор, стандартизированный Open Software Foundation (OSF), определённый в RFC 4122. Его цель — позволить распределённым системам уникально идентифицировать информацию без центрального органа для назначения ID.

Стандартный UUID выглядит как `550e8400-e29b-41d4-a716-446655440000`, состоит из 32 шестнадцатеричных цифр, разделённых дефисами на 5 групп (8-4-4-4-12). Теоретически вероятность коллизии UUID v4 составляет примерно 1/10^36 — если бы вы генерировали 1 миллиард UUID в секунду в течение примерно 800 лет, вероятность одной коллизии составила бы примерно 50%, что на практике ничтожно мало.

UUID широко используются для первичных ключей баз данных, распределённых ID трассировки, ID запросов, ID трассировки логов, уникального именования файлов, ID тестовых данных и идентификаторов сессий. Почти все основные языки программирования включают встроенные библиотеки для генерации UUID.

Варианты использования

  • Генерация UUID v4 в качестве первичных ключей записей таблиц при проектировании баз данных, чтобы избежать утечки объёма данных из автоинкрементных ID
  • Использование ULID как сортируемых глобальных ID запросов/трассировки в распределённых системах или архитектурах микросервисов
  • Массовая генерация UUID в качестве тестовых данных и имитации ID заказов/пользователей при разработке API и интеграционном тестировании
  • Использование NanoID вместо UUID в коротких ссылках фронтенда или URL для обмена — короче, чище, не требуется URL-кодирование
  • Использование UUID v5 для генерации детерминированных ID из фиксированных пространств имён, гарантируя, что одинаковый ввод всегда даёт одинаковый вывод
  • Использование функции проверки для определения типа и версии ID при обнаружении идентификаторов неизвестного формата в отладочных логах или сторонней документации

Как использовать

  1. Выберите нужный тип ID из карточек выше: UUID v4 (рекомендуется), v1, v5, ULID или NanoID
  2. Если вы выбрали UUID v5, введите строку пространства имён; для других ID можно сразу настроить параметры формата
  3. Переключите при необходимости параметры регистра и дефисов, установите количество для массовой генерации (1-100) с помощью быстрых кнопок или ползунка
  4. Нажмите кнопку генерации, чтобы увидеть результаты — копируйте по отдельности, скопируйте все сразу или экспортируйте в TXT/JSON
  5. Для проверки существующего ID перейдите на вкладку «Проверить» и вставьте строку ID, чтобы получить информацию о типе и версии

Функции

  • Пять типов ID в одном инструменте: UUID v1 (метка времени), v4 (случайный), v5 (пространство имён), ULID (сортируемый) и NanoID (URL-безопасный) — один инструмент покрывает потребности любого технологического стека
  • Проверка и распознавание UUID: перейдите на вкладку Проверить, вставьте любой ID, чтобы определить его версию UUID или распознать формат ULID/NanoID — быстрое устранение проблем при отладке
  • Массовая генерация до 100: генерируйте любое количество от 1 до 100 ID за раз — больше не нужно копировать вручную по одному для тестовых данных
  • Гибкое форматирование: переключайте регистр и дефисы для UUID, чтобы соответствовать требованиям формата баз данных, URL и файлов конфигурации
  • Экспорт и локальная история: скопируйте всё одним кликом, экспортируйте файлы TXT/JSON, история генерации сохраняется локально для мгновенного восстановления — массовые операции эффективнее
  • Безопасная генерация на стороне клиента: использует crypto API браузера для криптографически стойких случайных чисел, ID никогда не покидают ваше устройство, работает офлайн

Примеры кода

Генерация UUID v4 на JavaScript

javascript

Современные браузеры и Node.js 14.17+ имеют встроенный Web Crypto API, позволяющий напрямую генерировать UUID v4 без сторонних библиотек.

// Современные браузеры / Node.js 19+
const id = crypto.randomUUID();
console.log(id); // "550e8400-e29b-41d4-a716-446655440000"

// Node.js 14.17 - 18.x
const crypto = require('crypto');
const id = crypto.randomUUID();

Массовая генерация UUID на Python

python

Используйте модуль uuid стандартной библиотеки Python для массовой генерации нескольких UUID v4, идеально для подготовки тестовых данных.

import uuid

# Генерация одного UUID
uid = uuid.uuid4()
print(uid)

# Массовая генерация 10 UUID
for _ in range(10):
    print(uuid.uuid4())

# Генерация UUID в верхнем регистре без дефисов
print(uuid.uuid4().hex.upper())

Генерация UUID из командной строки Shell

bash

Быстрая генерация UUID в терминале Linux/macOS, подходит для использования в shell-скриптах.

# Linux
uuidgen

# macOS
uuidgen | tr 'A-Z' 'a-z'

# Прямое чтение из системного файла случайных чисел (самый низкоуровневый способ)
cat /proc/sys/kernel/random/uuid

Какую схему уникального ID выбрать?

UUID — не единственный выбор: автоинкрементные ID баз данных и Snowflake также являются популярными решениями для первичных ключей. Сначала оцените «объём данных, нужна ли глобальная уникальность, нужна ли сортировка по времени» — и только потом выбирайте конкретную схему, это поможет избежать многих проблем.

UUID v1 / v4 / v5 / ULID / NanoID: что выбрать?

5 типов ID имеют разные компромиссы по объёму данных, сортируемости и длине символов. Принимайте решения на основе «где используется + нужна ли сортировка + используется ли напрямую в URL» — это надёжнее, чем выбирать по самим числам.

СхемаРекомендуемый сценарийСортируемостьДлинаРекомендация
UUID v1Внутренние системы, где нужна сортировка по времени и допустима утечка MAC-адреса и времени генерацииПо времени36 символов⚠ Обычно не рекомендуется (утечка конфиденциальности)
UUID v4Первичные ключи БД, общие идентификаторы, большинство бизнес-сценариевНеупорядоченный (случайный)36 символов✓ Универсальный выбор
UUID v5Сценарии, требующие детерминированного вывода (одинаковый ввод → одинаковый UUID)Неупорядоченный36 символов✓ Рекомендуется при фиксированном пространстве имён
ULIDПервичные ключи распределённых систем, трассировка логов, индексы с сортировкой по времениПо времени (первые 48 бит — миллисекундная метка времени)26 символов✓ Первый выбор для распределённых систем
NanoIDКороткие URL, идентификаторы cookie, ссылки JS на фронтендеНеупорядоченный (случайный)21 символ (по умолчанию)✓ Первый выбор для коротких ID

UUID vs автоинкрементный ID БД vs Snowflake ID: как выбрать схему первичного ключа?

Эти три схемы — самые распространённые варианты для первичных ключей на бэкенде, определяющие масштабируемость, безопасность параллелизма и характеристики производительности системы. Принимайте решения на основе «объём данных / нужна ли глобальная уникальность / нужна ли читаемость» — это поможет избежать архитектурных изменений в будущем.

ИзмерениеUUIDАвтоинкрементный ID БДSnowflake
Глобальная уникальность✓ Да (теоретически)✗ Нет (при шардинге будут дубликаты)✓ Да (гарантируется дата-центром + worker ID)
Утечка объёма данных✓ Не утекает✗ Прямая утечка (последовательное увеличение 1, 2, 3 раскрывает реальный объём)⚠ Бит времени утекает время генерации (общий объём не раскрывается напрямую)
Сортируемость✗ Неупорядоченный (исключение — ULID)✓ Монотонно возрастает (дружелюбен к B-Tree)✓ Возрастает с тенденцией (упорядочен в пределах одной миллисекунды)
Шардинг БД✓ Естественная поддержка✗ Требуется генератор ID или доработка✓ Различается по worker ID
Стоимость хранения⚠ Высокая (BINARY(16) 16 байт)✓ Низкая (BIGINT 8 байт)✓ Низкая (BIGINT 8 байт)
Подходящие сценарииМногосервисные/распределённые первичные ключи, внешние идентификаторы, бизнес с чувствительным объёмом данныхМонолитные приложения, внутренние системы управления, не требующие глобальной уникальностиIM с высокой конкурентностью, номера заказов, ID сообщений (требуется собственная реализация)

Best Practices

В качестве первичных ключей production-БД выбирайте UUID v4 или ULID, избегайте v1

Последние 48 бит UUID v1 — это MAC-адрес, первые 48 бит — метка времени с точностью 100 нс — **эти два поля можно восстановить в отпечаток машины и время генерации**. В RFC 4122 явно указано, что v1 используется «только при необходимости обратной совместимости». В production следует выбирать v4 (случайный) или ULID (сортируемый), v1 применяется лишь изредка при отладке, когда нужно отследить машину-источник. **Категорически нельзя** использовать v1 в качестве публичного ID пользователя, ID устройства или номера заказа.

Как выбрать между UUID v1, v4 и v5?

Длина UUID 128 бит ≠ энтропия: v4 фактически имеет только 122 бита

Хотя UUID v4 имеет общую длину 128 бит, **первые 4 бита — номер версии (фиксировано 0100), последние 2 бита — номер варианта (фиксировано 10)**, реально случайными являются только 122 бита. Это ограничение формата, установленное RFC 4122 — **любая библиотека UUID v4, утверждающая, что «все 128 бит случайны», реализована неправильно**. Кроме того, в последних 64 битах v4 старшие 2 бита 7-го байта также являются полем варианта, фактическая энтропия ещё ниже. При проектировании системы рассчитывайте безопасность исходя из 122 бит (а не 128), чтобы не недооценивать риск коллизий.

RFC 4122 — Спецификация UUID

Для хранения UUID обязательно используйте столбец BINARY(16), а не VARCHAR(36)

Строка UUID v4 `550e8400-e29b-41d4-a716-446655440000` выглядит компактно, но на самом деле VARCHAR(36) хранит 36 байт + 2 байта длины = 38 байт, **что в 2,4 раза больше, чем BINARY(16)**. MySQL/PostgreSQL/MSSQL имеют встроенные функции UUID, поддерживающие прямую запись в BINARY(16), размер индекса также уменьшается вдвое. Когда таблица превышает 100 млн строк, индекс первичного ключа VARCHAR(36) увеличивает высоту B-Tree на 1-2 уровня, **производительность запросов падает на 30-50%**. На фронтенде при отображении преобразуйте в строку, на уровне бизнес-логики всегда передавайте BINARY(16).

Сравнение UUID / ULID / NanoID

Для URL используйте NanoID или UUID без дефисов, избегайте URL-кодирования

Набор символов UUID v4 — это `[0-9a-f-]`, **дефис - в URL path требует двойного URL-кодирования** (сначала экранируется в %2D, затем в %252D), что выглядит очень некрасиво. Два решения: **(1) для URL напрямую используйте NanoID** (по умолчанию 21 URL-безопасный символ); **(2) UUID v4 + отключите дефисы** для вывода 32 чистых hex-символов, не требующих кодирования как сегмент URL path. Для cookie также предпочтительнее NanoID (A-Za-z0-9_-) или UUID без дефисов, избегая символов `+` `/` `=` (набор символов Base64).

Можно ли убрать дефисы или преобразовать UUID в верхний регистр?

После массовой генерации обязательно выполняйте дедупликацию — баги генератора могут вызвать дубликаты

Вероятность коллизии UUID v4 составляет примерно 1/10^36, теоретически дедупликация не нужна — **но в инженерии не стоит доверять теории**. Сбои RNG ядра Linux, баги реализации `crypto.randomUUID` в ранних версиях Node.js, недостаточный источник энтропии при запуске Cloud VM и другие реальные инциденты уже приводили к тому, что массово сгенерированные UUID содержали дубликаты. **В production после массовой генерации 100 000+ UUID обязательно используйте `SELECT id, COUNT(*) FROM t GROUP BY id HAVING COUNT(*) > 1` для дедупликации**, при обнаружении проблем немедленно откатывайте версию генератора. Это лучшая практика, выстраданная в сценариях миграции данных и массового импорта.

Можно ли сгенерировать несколько UUID сразу?

Часто задаваемые вопросы

В чём разница между UUID и GUID?

UUID (Universally Unique Identifier) и GUID (Globally Unique Identifier) — это по сути одно и то же с разными названиями: UUID — это официальное название стандарта IETF (RFC 4122), а GUID — термин, предпочитаемый Microsoft в экосистеме Windows. Оба имеют идентичный 128-битный формат вида `550e8400-e29b-41d4-a716-446655440000`. Стандартные UUID, генерируемые этим инструментом, взаимозаменяемы в любых сценариях, требующих GUID.

Как выбрать между UUID v1, v4 и v5?

UUID v1 основан на метке времени и MAC-адресе — упорядочен по времени и отслеживаем, но может раскрывать информацию о MAC-адресе. UUID v4 полностью случайный, самый распространённый и безопасный вариант, подходит для большинства сценариев первичных ключей и идентификаторов. UUID v5 — это версия на основе пространства имён с хэшем SHA-1: одно и то же пространство имён + одно и то же имя всегда генерируют одинаковый UUID, идеально для сценариев с детерминированным выводом. Для обычной разработки UUID v4 является выбором по умолчанию.

Какие преимущества у ULID и NanoID по сравнению с UUID v4?

ULID (26 символов) короче UUID (36 символов с дефисами) и может лексикографически сортироваться по времени создания, что делает его идеальным для индексов баз данных и отслеживания логов. NanoID (по умолчанию 21 символ) ещё короче и быстрее, использует URL-безопасные символы, поэтому не требует экранирования в URL и файлах cookie — он примерно на 30% меньше UUID. У всех трёх вероятность коллизии ничтожно мала, но сортируемость ULID особенно полезна в распределённых системах, а NanoID удобнее для фронтенд/URL-сценариев.

Можно ли сгенерировать несколько UUID сразу?

Да. Этот инструмент поддерживает массовую генерацию от 1 до 100 идентификаторов. Установите количество с помощью быстрых кнопок или ползунка и сгенерируйте одним кликом — идеально для создания тестовых данных, массового импорта и подготовки уникальных ID для скриптов. После генерации вы можете скопировать все результаты сразу или экспортировать в виде файлов TXT или JSON.

Руководство по массовой генерации

Можно ли проверить, является ли строка действительным UUID?

Да. Перейдите на вкладку «Проверить» и вставьте любую строку — инструмент автоматически определит и проверит: стандартные UUID (v1/v3/v4/v5) сообщат свой конкретный номер версии, также распознаются форматы ULID (26 символов Crockford Base32) и NanoID (21 символ URL-безопасный), что очень удобно для быстрого устранения проблем с форматом ID при разработке и отладке.

Безопасно ли генерировать UUID онлайн? Утечут ли мои ID на сервер?

Полностью безопасно. Вся генерация и проверка ID выполняется локально в вашем браузере с помощью JavaScript, с использованием crypto.getRandomValues() для криптографически стойких случайных чисел. Ни один сгенерированный ID не отправляется ни на какой сервер, и история генерации не сохраняется в облаке. Работает даже при отключённом интернете, что делает его подходящим для корпоративных интранетов и чувствительных проектов.

Можно ли убрать дефисы или преобразовать UUID в верхний регистр?

Да. Для UUID v1/v4/v5 инструмент предоставляет два переключателя: «Верхний регистр» переключает регистр вывода, а «Дефисы» позволяет убрать чёрточки (полезно для URL, файлов конфигурации или баз данных, требующих формат без дефисов). ULID и NanoID по умолчанию не имеют дефисов и также поддерживают переключение регистра.

Почему стоит использовать онлайн-инструмент вместо командной строки для генерации UUID?

Инструменты командной строки (например, uuidgen в Linux, модуль uuid Python) требуют среды разработки. Онлайн-инструмент работает мгновенно в браузере без необходимости установки. Кроме того, этот инструмент объединяет распознавание версий UUID, массовый экспорт и функции локальной истории — удобнее при работе на разных устройствах (например, при генерации ID для нетехнических коллег) или когда ID нужны срочно.

Глоссарий

UUID
Universally Unique Identifier, длина 128 бит, стандарт RFC 4122, распространённые версии: v1 (метка времени+MAC), v4 (случайный), v5 (хэш SHA-1).
GUID
Globally Unique Identifier, термин Microsoft для UUID — они полностью идентичны по формату и назначению.
ULID
Universally Unique Lexicographically Sortable Identifier, 26 символов с использованием кодировки Crockford Base32, первые 48 бит — метка времени — сортируется по времени создания.
NanoID
Лёгкий генератор уникальных ID, по умолчанию 21 URL-безопасный символ (A-Za-z0-9_-), короче и быстрее UUID, идеально для фронтенд и URL-сценариев.
UUID v1
Версия UUID на основе метки времени и MAC-адреса, сортируется по времени, но может раскрывать MAC-адрес и время генерации — менее безопасна, чем v4.
UUID v4
Версия UUID полностью на основе случайных чисел, наиболее широко используемая, ничтожная вероятность коллизии, выбор по умолчанию при разработке.
UUID v5
Версия UUID на основе пространства имён с хэшем SHA-1 — одно и то же пространство имён + одно и то же имя ввода дают идентичный вывод UUID, подходит для детерминированных сценариев.
Вероятность коллизии
Вероятность того, что два случайно сгенерированных ID окажутся одинаковыми. Вероятность коллизии UUID v4 составляет примерно 1 к 17 миллиардам триллионов, ничтожна в практической разработке.
Crockford Base32
Кодировка Base32, разработанная Дугласом Крокфордом, использующая заглавные буквы и цифры с исключением I/L/O/U во избежание неоднозначных символов — используется в ULID.

Сравнение UUID / ULID / NanoID

ХарактеристикаUUID v4ULIDNanoID
Длина36 символов (с дефисами) / 32 символа (без дефисов)26 символов21 символ (по умолчанию)
Набор символовШестнадцатеричный (0-9a-f)Crockford Base32 (32 символа)URL-безопасный (64 символа)
СортируемостьНеупорядоченный (случайный)Упорядоченный по времениНеупорядоченный (случайный)
URL-безопасностьТребует экранирования (дефисы + буквы/цифры)В основном безопасен (заглавные + цифры)Полностью URL-безопасный
Скорость генерацииБыстроБыстро~60% быстрее UUID
Вероятность коллизии1/10^361/10^361/10^34 (при 21 символе)
Типичные сценарииПервичные ключи БД, общие IDРаспределённые системы, трассировка логовКороткие URL, ID фронтенда, cookie

Методы генерации UUID по языкам

ЯзыкКод
JavaScriptcrypto.randomUUID() // Современные браузеры / Node.js 19+
Pythonimport uuid; uuid.uuid4()
JavaUUID.randomUUID()
Gogithub.com/google/uuid; uuid.New()
Bash/Linuxuuidgen или cat /proc/sys/kernel/random/uuid

Authoritative References