Що таке UUID?
UUID (Universally Unique Identifier) — це 128-бітне значення, відображене як 36-символьний рядок на кшталт 550e8400-e29b-41d4-a716-446655440000. Формат і семантика версій визначені RFC 4122 для версій v1–v5 та RFC 9562 для новіших v6, v7 та v8. Цей інструмент генерує v4 (повністю випадковий), v1 (мітка часу плюс випадковий ідентифікатор вузла) та v7 (префікс мітки часу Unix у мілісекундах плюс випадковий суфікс, сортований за часом генерації) — все у вашому браузері за допомогою Web Crypto API платформи. Жодні дані не відправляються на сервер.
Як працює генерація UUID?
Кожна версія по-різному поєднує детермінованість, сортованість та ентропію. Інструмент вибирає правильний алгоритм на основі вашого вибору:
- v4 (випадковий) викликає
crypto.randomUUID()браузера, що повертає 122 біти криптографічної випадковості з 6 фіксованими бітами (версія0100та варіант10), розміщеними на правильних позиціях. Колізії астрономічно малоймовірні — вам потрібно згенерувати приблизно 2,71 квінтильйона v4 UUID, щоб отримати один дубль з ймовірністю 50%. - v1 (мітка часу + вузол) упаковує 60-бітну григоріанську мітку часу (100-наносекундні тіки з 1582-10-15) у
time_low/time_mid/time_hi_and_version, встановлює версійний ніббл на0001, вибирає 14-бітну послідовність годинника з встановленими варіантними бітами та використовує випадковий 48-бітний ідентифікатор вузла з примусово встановленим бітом multicast (RFC 4122 §4.5 явно дозволяє випадковий ідентифікатор вузла, коли MAC-адреса апаратного забезпечення недоступна). - v7 (сортована мітка часу), відповідно до RFC 9562 §5.7, розміщує 48-бітну big-endian мітку часу Unix у мілісекундах, потім 4-бітну версію
0111, потім 12 випадкових бітів, потім 2-бітний варіант10, потім 62 додаткові випадкові біти. Оскільки мітка часу знаходиться в найбільш значущих бітах, v7 UUID сортуються лексикографічно в порядку генерації — властивість, що жодна інша версія UUID не пропонує без додаткового кодування. - Вся випадковість отримується від
crypto.getRandomValues(), криптографічно безпечного RNG браузера. І v1, і v7 включають монотонний захист всередині тіку, щоб два послідовних виклики в межах одного тіку годинника все одно сортували другий вище першого — важливо для масових генерацій, що змагаються з мілісекундним годинником. - Конвеєр форматування запускається після генерації. Ви можете видалити дефіси, переключитися на верхній регістр, обгорнути значення в дужки (
{…}— конвенція Microsoft GUID) або відобразити raw 16 байтів як base64 (22-символьний вивід, без доповнення). Режим base64 перекриває інші опції форматування, оскільки base64 є власним представленням.
Навіщо використовувати цей генератор UUID?
- Нічого не покидає ваш браузер. Web Crypto API виконується локально; сторінка не робить жодних мережевих запитів після початкового завантаження документа. Відкрийте DevTools, натисніть «Генерувати», і панель Network залишається тихою.
- Вивід, що відповідає RFC. v4 дотримується RFC 4122 §4.4, v1 — §4.2 та §4.5, а v7 — RFC 9562 §5.7. Версійний ніббл та варіантні біти розміщені там, де стандарти вказують — кожен UUID проходить валідацію за канонічним регулярним виразом версії.
- Сортований v7 для ключів бази даних. UUID v7, використаний як кластеризований первинний ключ у Postgres, MySQL або SQL Server, зберігає вставки лише з доданням в кінець індексу — без поділу сторінок, без випадкового I/O — залишаючись при цьому глобально унікальним. v4 не може цього, оскільки його біти є випадковими.
- Масова генерація без обмежень. Генеруйте 1, 10, 100 або 1 000 UUID одразу. Квоти немає та реєстрації немає — інструмент виконується у вашій вкладці, тому обмеженням є ваш CPU, а не API-тариф постачальника.
Які поширені застосування UUID?
UUID зустрічаються скрізь, де системі потрібен глобально унікальний ідентифікатор без координації з центральним органом:
- Первинні ключі бази даних. Автоінкрементні цілі числа розкривають кількість рядків і ламають шардування. UUID стабільні між шардами, безпечні для злиття між регіонами та (з v7) тримають вставки B-дерева «гарячими» без поділу сторінок. Типовий застосунок генерує UUID на стороні клієнта, відправляє його у вставку та ніколи не потребує зворотного звернення до сервера для ключа.
- Ідентифікатори кореляції запитів. HTTP-middleware прикріплює v4 UUID до кожного вхідного запиту, журналює його на кожному спані та пропагує вниз (часто як заголовок
X-Request-Id). Коли клієнт повідомляє про помилку, інженер підтримки вставляє ідентифікатор, і весь слід запиту з'являється — по всіх сервісах та часових поясах — без двозначності. - Ключі ідемпотентності. Платіжні API (Stripe, Adyen, Square) приймають заголовок
Idempotency-Key, щоб повторний запит ніколи не стягував кошти з клієнта двічі. Клієнтський UUID гарантує унікальність ключа на логічну операцію — саме цього вимагають ці API.
Як виглядає приклад UUID?
У Node.js або сучасному браузері однорядник crypto.randomUUID() повертає свіжий v4 UUID — наприклад 3f50b5a8-2c54-4b9c-9c1f-3e5c7e2b8d12. Використовуйте його для ідентифікатора запиту або ключа ідемпотентності. Коли UUID іде у стовпець бази даних, що буде кластеризованим первинним ключем, генеруйте v7: два v7 значення, вироблені з різницею в одну мілісекунду, на кшталт 0190a3b0-7d4f-7c9e-8b21-a4d6f0bd9c11 та 0190a3b0-7d50-7f15-9c4e-72b3e0c1d8a4, сортуються лексикографічно в порядку генерації.
Цей генератор UUID робить одну роботу: перетворює кліки в один або кілька RFC-сумісних ідентифікаторів, відформатованих так, як вам потрібно, без відправки запиту на сервер. Оберіть версію, кількість, формат — генеруйте, копіюйте, рухайтесь далі.