Генератор UUID v4

Генеруйте значення UUID v4 онлайн: 122 випадкових біти, стандартний формат UUID та миттєвий результат у вашому браузері.

Формат
Згенеровані ID
Готово. Генеруйте значення UUID v4 у вашому браузері.

Як влаштований цей ID

Структура
128-бітний UUID з версією 4 та бітами варіанта RFC, представлений у вигляді шістнадцяткових груп 8-4-4-4-12.
Ентропія
122 випадкових біти, отримані через crypto.randomUUID().
Час
Немає; ідентифікатори v4 не містять інформації про час їхнього створення.
Ризик колізії
Колізії регулюються 122 випадковими бітами, що повністю виключає практичні ризики для звичайних систем.
Приклад
38b6ff9a-7dff-420b-98fc-c27c4b92bdcf

Ваші ідентифікатори генеруються локально за допомогою надійної випадковості браузера. Нічого не надсилається на BroBroGo.

Поширені запитання

Коли слід використовувати UUID v4?

Використовуйте UUID v4, коли вам потрібні непрозорі випадкові ідентифікатори, які не сортуються за часом створення та не розкривають інформацію про час.

Чи можу я видалити дефіси або зробити літери великими?

Так. Інструмент UUID v4 містить панель опцій, де можна вимкнути дефіси або перемкнути вивід у верхній регістр.

Генерація UUID v4: структура, випадковість та практичне застосування

UUID v4 — це 36-символьний ідентифікатор у стандартному форматі 8-4-4-4-12, де кожен символ — шістнадцяткова цифра. На відміну від впорядкованих за часом версій, UUID v4 використовує 122 біти чистої випадковості; решта 6 бітів зарезервовані для версії (4) та варіанту. Це означає, що значення UUID v4 не містять жодної часової мітки або інформації про порядок створення. Вони сортуються довільно, що спричиняє фрагментацію B-дерев індексів у базах даних, на відміну від часо-впорядкованих форматів, як-от UUID v7 або ULID.

Генератор на цій сторінці дозволяє створювати від 1 до 100 таких ідентифікаторів миттєво, прямо у браузері, з можливістю копіювати як окремі ID, так і всі разом. Управляються три параметри: кількість, регістр літер та наявність дефісів. Нижче розглянемо, як це працює, чому випадковість критична, і які практичні нюанси варто врахувати.

Структура UUID v4: 122 біти випадковості та 6 фіксованих бітів

Кожен UUID v4 — це 128-бітове число. Згідно зі специфікацією RFC 4122, біти розподіляються так:

  • Версія (4 біти): завжди 0100 (десяткове 4). Ці 4 біти фіксовані.
  • Варіант (2 біти): для стандарту RFC 4122 це завжди 10. Решта бітів у полі варіанту можуть бути довільними, але сумарно фіксовано 2 біти зі 128.
  • Випадкові біти: 122 біти, які генеруються криптографічно стійким генератором (наприклад, crypto.randomUUID у браузері). Саме вони забезпечують унікальність і непередбачуваність.

Тому, коли ви бачите рядок на кшталт f47ac10b-58cc-4372-a567-0e02b2c3d479, третій блок (4372) починається з 4 — це ознака версії. Другий символ четвертого блоку завжди 8, 9, a або b (у двійковому записі 10xx). Всі інші символи — випадкові.

Формат із дефісами робить ідентифікатор читабельним, але якщо їх прибрати, залишається 32 шістнадцяткові символи (128 бітів / 4 біти на символ). Опція «Верхній регістр» змінює лише відображення літер a–f на A–F, не впливаючи на саме значення.

Імовірність колізії: чому її можна знехтувати

122 біти випадковості дають 2¹²² можливих значень — приблизно 5.3×10³⁶. Це величезне число. Імовірність колізії (збігу двох випадкових UUID) можна оцінити за парадоксом днів народження: для того, щоб імовірність хоча б одного збігу перевищила 50%, потрібно згенерувати близько 2.71×10¹⁸ UUID. Для 10¹² ідентифікаторів імовірність колізії становить менше ніж 10⁻¹³. Тому на практиці колізії UUID v4 не трапляються, якщо використовується якісне джерело випадковості.

Це робить UUID v4 придатним для розподілених систем, де центральна координація неможлива. Кожен вузол може генерувати ідентифікатори незалежно, не боячись дублікатів.

Вплив на індексацію в базах даних: фрагментація B-дерев

Головний недолік UUID v4 у порівнянні з часо-впорядкованими ідентифікаторами — це вплив на продуктивність запису в базах даних, які використовують B-дерева (наприклад, InnoDB у MySQL, стандартні індекси PostgreSQL). Оскільки UUID v4 розподілені рівномірно та випадково, нові рядки вставляються в довільні позиції індексу, що спричиняє:

  • Роздвоєння сторінок (page splits) — частіше, ніж при монотонному зростанні первинного ключа.
  • Фрагментацію індексу — багато напівпорожніх сторінок.
  • Погіршення часу вставки — особливо на таблицях з великою кількістю рядків.

У результаті пропускна здатність запису може впасти на 30–50% порівняно з використанням автоінкрементних цілих чисел або UUID v7, які впорядковані за часом. Однак для баз даних, що використовують LSM-дерева (наприклад, Cassandra, RocksDB), випадковий порядок менш шкідливий, а іноді навіть корисний для рівномірного розподілу навантаження.

Якщо вам потрібна висока швидкість запису на реляційній базі з B-деревами, розгляньте UUID v7 або ULID. Якщо ж головне — максимальна випадковість та відсутність часової кореляції (наприклад, для API-токенів), UUID v4 залишається вибором.

Коли випадкові ідентифікатори кращі за впорядковані

Незважаючи на проблеми з індексацією, UUID v4 має сценарії, де він незамінний:

  1. Приховування кількості записів — якщо ідентифікатори публічно видимі (наприклад, у URL), випадкові UUID не дають оцінити загальну кількість об'єктів, на відміну від автоінкрементних чисел.
  2. Запобігання перебору (enumeration attacks) — вгадати наступний дійсний ID практично неможливо. Це критично для ідентифікаторів ресурсів, які не повинні бути доступні без авторизації.
  3. Офлайн-генерація — пристрої без доступу до мережі можуть генерувати унікальні ID незалежно один від одного, що необхідно в IoT, мобільних застосунках та розподілених системах.
  4. Непередбачуваність для безпеки — для токенів сесій, ключів API, одноразових посилань UUID v4 забезпечує 122 біти ентропії, що значно краще за випадкові числа з меншою розрядністю.

Налаштування формату: коли дефіси та регістр важливі

Генератор дозволяє вмикати/вимикати дефіси та змінювати регістр. Ці опції впливають на сумісність з різними системами.

  • Дефіси: стандартний формат (8-4-4-4-12) визначений RFC 4122. Його розуміють усі UUID-сумісні бібліотеки. Якщо прибрати дефіси, рядок стає 32-символьним шістнадцятковим кодом. Це зручно для використання в URL без кодування, але деякі системи можуть не сприймати його як UUID.
  • Верхній регістр: шістнадцяткові літери a–f vs. A–F. RFC 4122 не вимагає певного регістру, але деякі системи (наприклад, Windows) за замовчуванням виводять великі літери. Важливо: при порівнянні UUID регістр ігнорується, але якщо ваш код чутливий до регістру (наприклад, регулярний вираз), краще використовувати один стандарт.

Зміна будь-якого параметра (формат, кількість, регістр, дефіси) миттєво перегенеровує всі ідентифікатори. Тому перед копіюванням переконайтеся, що налаштування відповідають потребам.

FAQ: поширені запитання

1. Чи можна використовувати UUID v4 як первинний ключ у великій таблиці?
Так, але варто зважати на фрагментацію індексу. Якщо таблиця має мільярди рядків і високе навантаження на запис, розгляньте UUID v7 або ULID. Для невеликих таблиць (до 10 млн рядків) втрата продуктивності часто непомітна.

2. Як генерується випадковість у браузері?
Сучасні браузери використовують crypto.getRandomValues() або crypto.randomUUID(), які спираються на криптографічно стійкий генератор, що постачається операційною системою. Це достатньо для більшості застосувань, включно з токенами безпеки.

3. Чи може згенеруватися два однакових UUID v4?
Теоретично так, але практично — ні. Для 10¹² ідентифікаторів імовірність колізії менша ніж 10⁻¹³. Космічне випромінювання, що викликає збій біта, трапляється частіше. Тому вважайте їх унікальними.

4. Чи можна згенерувати більше ніж 100 UUID за один раз?
На цій сторінці — ні, ліміт 100. Але ви можете повторити генерацію. Для масового створення скористайтеся скриптами або командним рядком.

5. Що означає опція "Upper case"? Чи впливає вона на значення?
Вона змінює лише відображення: літери a–f перетворюються на A–F. Значення UUID (набір бітів) залишається тим самим. Деякі системи вимагають певного регістру для сумісності.

6. Чому UUID v4 має 36 символів, а якщо без дефісів — 32?
36 = 32 шістнадцяткові символи (по одному на 4 біти) + 4 дефіси. Дефіси додаються для зручності читання та відповідають структурі, визначеній у RFC 4122.

Чим UUID v4 відрізняється від v7, ULID та NanoID

Хоча всі ці формати генерують унікальні ідентифікатори, вони мають різні властивості:

Формат Випадковість Впорядкованість Довжина Джерело
UUID v4 122 біти Ні 36 символів Випадковий
UUID v7 ~74 біти За часом (мілісекунди) 36 символів Час + випадковість
ULID 80 бітів За часом (мілісекунди) 26 символів (Crockford base32) Час + випадковість
NanoID 126 бітів (за замовчуванням) Ні 21 символ (за замовчуванням) Випадковий

UUID v7 та ULID краще підходять для баз даних з B-деревами через впорядкованість, але вони розкривають часову інформацію. UUID v4 і NanoID приховують час, що важливо для безпеки. NanoID коротший, але не є стандартом.

Ця сторінка фокусується саме на UUID v4, тому для інших форматів передбачені окремі розділи з власними налаштуваннями.

Безпека та локальна генерація

Усі обчислення виконуються безпосередньо у вашому браузері. Ні один згенерований ідентифікатор не передається на сервер. Це важливо, якщо ви використовуєте UUID v4 як ключі API або токени — вони не можуть бути перехоплені при передачі. Крім того, локальна генерація працює навіть без інтернету (після завантаження сторінки).

Пам'ятайте: випадковість, отримана з браузера, вважається криптостійкою, тому підходить для більшості практичних завдань безпеки. Однак для дуже високих вимог (наприклад, генерація ключів шифрування) краще використовувати апаратні генератори випадкових чисел або спеціалізовані бібліотеки.

Типові помилки при роботі з UUID v4

  • Використання як первинного ключа без урахування індексації — призводить до деградації продуктивності на великих обсягах.
  • Плутанина з UUID v1 або v7 — вони містять час, тому їх не можна використовувати там, де потрібна непередбачуваність.
  • Копіювання з дефісами туди, де потрібен тільки 32-символьний рядок — наприклад, у деяких API або імена файлів. Використовуйте опцію "Include hyphens" для контролю цього.
  • Очікування впорядкованості — UUID v4 не сортуються за часом, тому не розраховуйте на них для пагінації або часових запитів.
  • Ігнорування регістру при порівнянні — хоча за специфікацією порівняння регістронезалежне, деякі мови програмування можуть вважати "abcdef" і "ABCDEF" різними рядками. Завжди нормалізуйте регістр або використовуйте порівняння без урахування регістру.

Підсумок

UUID v4 — це надійний спосіб створення унікальних ідентифікаторів з високою ентропією, придатний для розподілених систем, безпеки та сценаріїв, де небажаний часовий зв'язок. Однак через випадковий порядок він поступається за продуктивністю впорядкованим форматам в індексах B-дерев. Генератор на цій сторінці дає змогу легко налаштувати формат, кількість і регістр, копіювати результати миттєво — все це без серверного навантаження та з гарантією конфіденційності.