UUID Decoder
Decode and inspect UUID structure, version, and embedded data
Ввод UUID
Вставьте UUID выше для инспекции
Структура UUID
UUID — 128-битный идентификатор, представляемый как 32 шестнадцатеричных символа, разделённых дефисами в пяти группах:
Дефисы косметические и не несут информации. UUID также представляются без дефисов как 32-символьная строка.
Поле версии UUID
Версия кодируется в первом ниббле третьей группы (символы 13-15 в стандартном UUID).
const hex = uuid.replace(/-/g, '') const version = parseInt(hex[12], 16) // single hex digit → 1, 2, 3, 4, 5, 6, 7, or 8
Версия 7 (UUID v7) — новейшая широко используемая версия, введённая в RFC 9562 (2024). Она кодирует Unix-миллисекундный timestamp в старших битах для обеспечения сортируемости.
Поле варианта UUID
Вариант кодируется в наиболее значимых битах первого байта четвёртой группы.
| Биты | Диапазон ниббла | Вариант | Описание |
|---|---|---|---|
| 0xxx xxxx | 0x00–0x7F | NCS совместимость | Зарезервировано для обратной совместимости NCS |
| 10xx xxxx | 0x80–0xBF | RFC 4122 / RFC 9562 | RFC 4122 / RFC 9562 UUID — стандартный вариант |
| 110x xxxx | 0xC0–0xDF | Совместимость с Microsoft | Зарезервировано для совместимости с GUID Microsoft |
| 111x xxxx | 0xE0–0xFF | Зарезервировано | Зарезервировано для будущего использования |
На практике почти все UUID, с которыми вы сталкиваетесь, используют вариант RFC 4122 / RFC 9562 (битовый паттерн 10xx xxxx, первый байт четвёртой группы в диапазоне 0x80–0xBF). Варианты NCS, Microsoft COM и Reserved — это устаревшие форматы, которые редко встречаются в современных системах.
Версии UUID
В пределах стандартного варианта RFC 4122/9562 определено восемь версий UUID:
| Версия | Имя | Стандарт | Описание |
|---|---|---|---|
| v1 | Основан на времени | RFC 4122 | 60-битная Gregorian-временная метка + MAC-адрес или случайный узел |
| v2 | DCE Security | RFC 4122 | Как v1, но time_low заменён UID/GID POSIX |
| v3 | Основан на MD5 хэше | RFC 4122 | MD5 хэш UUID пространства имён + имени |
| v4 | Случайный | RFC 4122 | 122 бита криптографически защищённой случайности |
| v5 | Основан на SHA-1 хэше | RFC 4122 | SHA-1 хэш UUID пространства имён + имени |
| v6 | Упорядоченный по времени | RFC 9562 | Как v1, но поля переставлены для лексикографической сортировки (RFC 9562) |
| v7 | Unix Epoch основанный на времени | RFC 9562 | 48-битная Unix-временная метка в мс + 74 бита случайных данных (RFC 9562) |
| v8 | Пользовательский | RFC 9562 | Зарезервирован для пользовательских/экспериментальных UUID (RFC 9562) |
Декодирование UUID v1
UUID v1 кодирует высокоточную временную метку в трёх полях. Временная метка основана на Gregorian-эпохе (15 октября 1582).
// UUID v1: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 // ^^^^^^^^ ^^^^ ^^^^ ^^^^^ ^^^^^^^^^^^^ // time-low mid hi clk node (MAC) // ^ // version nibble (1) const hex = '6ba7b8109dad11d180b400c04fd430c8' const tLow = parseInt(hex.slice(0, 8), 16) // 0x6ba7b810 const tMid = parseInt(hex.slice(8, 12), 16) // 0x9dad const tHi = parseInt(hex.slice(13, 16), 16) // 0x1d1 (skip version nibble at index 12) // Reconstruct 60-bit timestamp (100-ns intervals since Oct 15, 1582) const t = (BigInt(tHi) << 48n) | (BigInt(tMid) << 32n) | BigInt(tLow) // Subtract Gregorian offset (Oct 15, 1582 → Jan 1, 1970 in 100-ns units) const GREGORIAN_OFFSET = 122192928000000000n const unixMs = (t - GREGORIAN_OFFSET) / 10000n console.log(new Date(Number(unixMs)).toISOString()) // → 1998-02-04T22:13:53.578Z
Поле узла содержит MAC-адрес хоста или случайное значение с установленным bitом multicast.
Декодирование UUID v7
UUID v7 кодирует 48-битную Unix-временную метку в мс в наиболее значимых битах. Извлекается без эпохового смещения.
// UUID v7: 018e4bc8-1000-7000-8000-000000000001 // ^^^^^^^^^^^^ // 48-bit Unix ms timestamp const hex = '018e4bc8100070008000000000000001' // First 48 bits (12 hex chars) = Unix timestamp in milliseconds const ms = parseInt(hex.slice(0, 12), 16) // 0x018e4bc81000 console.log(new Date(ms).toISOString()) // → 2024-03-11T…Z // Everything after byte 6 is random (except version/variant bits)
Первые 12 символов UUID v7 (без дефисов) кодируют временную метку.
Как работает обнаружение UUID
Декодер извлекает версию из символов 13-15. Для v1 и v7 дополнительно декодирует поля временной метки.
// Detect UUID version from the 13th hex character (index 12)
function uuidVersion(uuid) {
const clean = uuid.replace(/-/g, '')
return parseInt(clean[12], 16)
}
uuidVersion('550e8400-e29b-41d4-a716-446655440000') // → 4
uuidVersion('018e4bc8-1000-7000-8000-000000000001') // → 7
uuidVersion('6ba7b810-9dad-11d1-80b4-00c04fd430c8') // → 1
// Detect variant from the 17th hex character (index 16, first char of 4th group)
function uuidVariant(uuid) {
const clean = uuid.replace(/-/g, '')
const b = parseInt(clean[16], 16)
if ((b & 0x8) === 0) return 'NCS'
if ((b & 0xC) === 0x8) return 'RFC 4122'
if ((b & 0xE) === 0xC) return 'Microsoft'
return 'Reserved'
}Специальные UUID
NIL UUID
NIL UUID — 00000000-0000-0000-0000-000000000000 — все 128 бит равны нулю. Означает «отсутствие UUID».
MAX UUID
MAX UUID — ffffffff-ffff-ffff-ffff-ffffffffffff — все 128 бит равны единице (RFC 9562).