Генератор 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 при обнаружении идентификаторов неизвестного формата в отладочных логах или сторонней документации
Как использовать
- Выберите нужный тип ID из карточек выше: UUID v4 (рекомендуется), v1, v5, ULID или NanoID
- Если вы выбрали UUID v5, введите строку пространства имён; для других ID можно сразу настроить параметры формата
- Переключите при необходимости параметры регистра и дефисов, установите количество для массовой генерации (1-100) с помощью быстрых кнопок или ползунка
- Нажмите кнопку генерации, чтобы увидеть результаты — копируйте по отдельности, скопируйте все сразу или экспортируйте в TXT/JSON
- Для проверки существующего 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 v4 | ULID | NanoID |
|---|---|---|---|
| Длина | 36 символов (с дефисами) / 32 символа (без дефисов) | 26 символов | 21 символ (по умолчанию) |
| Набор символов | Шестнадцатеричный (0-9a-f) | Crockford Base32 (32 символа) | URL-безопасный (64 символа) |
| Сортируемость | Неупорядоченный (случайный) | Упорядоченный по времени | Неупорядоченный (случайный) |
| URL-безопасность | Требует экранирования (дефисы + буквы/цифры) | В основном безопасен (заглавные + цифры) | Полностью URL-безопасный |
| Скорость генерации | Быстро | Быстро | ~60% быстрее UUID |
| Вероятность коллизии | 1/10^36 | 1/10^36 | 1/10^34 (при 21 символе) |
| Типичные сценарии | Первичные ключи БД, общие ID | Распределённые системы, трассировка логов | Короткие URL, ID фронтенда, cookie |
Методы генерации UUID по языкам
| Язык | Код |
|---|---|
| JavaScript | crypto.randomUUID() // Современные браузеры / Node.js 19+ |
| Python | import uuid; uuid.uuid4() |
| Java | UUID.randomUUID() |
| Go | github.com/google/uuid; uuid.New() |
| Bash/Linux | uuidgen или cat /proc/sys/kernel/random/uuid |
Authoritative References
- Симулятор дальтонизма
- Конвертер цветов
- Конвертер .htaccess в Nginx
- SQL Конвертер
- Парсер Cookie
- Генератор Cron-выражений
- Валидатор Cron-выражений
- Форматирование CSS
- Минификация CSS
- CSV в Excel
- Конвертер валют
- Сравнение текста
- Генератор иконок сайта
- Форматирование XML
- Шестнадцатеричный конвертер
- Форматирование HTML
- Минификация HTML
- HTML в Markdown
- Markdown в HTML
- Форматирование JavaScript
- Минификация JS
- Форматировщик JSX
- Минификация JSX
- Кластеризация ключевых слов
- Генератор Lorem Ipsum
- Генератор Markdown-таблиц
- Генератор мета-тегов
- Генератор паролей
- Проверка надёжности пароля
- Генератор QR Code и штрихкодов
- Тестировщик регулярных выражений
- Генератор slug
- Генератор SQL
- Форматировщик SQL
- Счётчик Слов
- Инструмент времени
- Форматирование TS
- Сжатие TS
- Форматирование TSX
- Сжатие TSX
- Конвертер Unix Timestamp
- Генератор UUID
- Форматирование YAML
- Преобразование корпуса