UUID Decoder

Decode and inspect UUID structure, version, and embedded data

Попробовать пример

Ввод UUID

Вставьте UUID выше для инспекции

Структура UUID

UUID — 128-битный идентификатор, представляемый как 32 шестнадцатеричных символа, разделённых дефисами в пяти группах:

Стандартный формат:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
xxxxxxxx (8)32-битный — историческое поле time_low (или случайные биты в v4)
xxxx (4)16-битный — историческое поле time_mid (или случайные биты в v4)
Mxxx (4)Ниббл версии + поле time_hi или случайные биты
Nxxx (4)Маркер варианта + тактовый последовательный счётчик или случайные биты
xxxxxxxxxxxx (12)48-битный — MAC-адрес или случайные биты

Дефисы косметические и не несут информации. UUID также представляются без дефисов как 32-символьная строка.

Поле версии UUID

Версия кодируется в первом ниббле третьей группы (символы 13-15 в стандартном UUID).

JavaScript
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 xxxx0x00–0x7FNCS совместимостьЗарезервировано для обратной совместимости NCS
10xx xxxx0x80–0xBFRFC 4122 / RFC 9562RFC 4122 / RFC 9562 UUID — стандартный вариант
110x xxxx0xC0–0xDFСовместимость с MicrosoftЗарезервировано для совместимости с GUID Microsoft
111x xxxx0xE0–0xFFЗарезервированоЗарезервировано для будущего использования

На практике почти все UUID, с которыми вы сталкиваетесь, используют вариант RFC 4122 / RFC 9562 (битовый паттерн 10xx xxxx, первый байт четвёртой группы в диапазоне 0x80–0xBF). Варианты NCS, Microsoft COM и Reserved — это устаревшие форматы, которые редко встречаются в современных системах.

Версии UUID

В пределах стандартного варианта RFC 4122/9562 определено восемь версий UUID:

ВерсияИмяСтандартОписание
v1Основан на времениRFC 412260-битная Gregorian-временная метка + MAC-адрес или случайный узел
v2DCE SecurityRFC 4122Как v1, но time_low заменён UID/GID POSIX
v3Основан на MD5 хэшеRFC 4122MD5 хэш UUID пространства имён + имени
v4СлучайныйRFC 4122122 бита криптографически защищённой случайности
v5Основан на SHA-1 хэшеRFC 4122SHA-1 хэш UUID пространства имён + имени
v6Упорядоченный по времениRFC 9562Как v1, но поля переставлены для лексикографической сортировки (RFC 9562)
v7Unix Epoch основанный на времениRFC 956248-битная Unix-временная метка в мс + 74 бита случайных данных (RFC 9562)
v8ПользовательскийRFC 9562Зарезервирован для пользовательских/экспериментальных UUID (RFC 9562)

Декодирование UUID v1

UUID v1 кодирует высокоточную временную метку в трёх полях. Временная метка основана на Gregorian-эпохе (15 октября 1582).

JavaScript
// 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
Note:Для декодирования: объедините time_hi, time_mid и time_low в 60-битное целое, вычтите смещение Gregorian-эпохи и преобразуйте в POSIX-время.

Поле узла содержит MAC-адрес хоста или случайное значение с установленным bitом multicast.

Декодирование UUID v7

UUID v7 кодирует 48-битную Unix-временную метку в мс в наиболее значимых битах. Извлекается без эпохового смещения.

JavaScript
// 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 дополнительно декодирует поля временной метки.

JavaScript
// 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).

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

Как декодер определяет версию UUID?
Проверяет первый ниббл третьей группы. Значение 1-8 указывает версию RFC 4122/9562.
Что означает вариант UUID?
Зависит от версии. UUID v1 и v7 содержат временну́ю метку, которую можно полностью восстановить. UUID v1 также содержит MAC-адрес. UUID v3 и v5 — односторонние хэши: восстановить исходное имя из UUID невозможно. UUID v4 полностью случаен — восстанавливать нечего.
Можно ли обратить UUID v4, чтобы найти время создания?
Нет. UUID v4 полностью случаен — нет временной метки. UUID v1 и v7 её кодируют.
Что такое компактный UUID без дефисов?
32-символьная шестнадцатеричная строка — функционально идентична форматированному UUID. Декодер принимает оба формата.
Верхний регистр vs нижний в UUID?
UUID нечувствителен к регистру по RFC 4122. Декодер принимает оба варианта.
Могут ли UUID из разных систем конфликтовать?
UUID v4 — крайне маловероятно. UUID v1 — невозможно для разных машин и времён. UUID v3/v5 — конфликтов нет при разных входных данных.
GUID — то же самое, что UUID?
GUID (Globally Unique Identifier) — название Microsoft для того же самого понятия. GUID следуют тому же 128-битному формату RFC 4122. Единственное практическое отличие заключается в том, что устаревшие Microsoft GUID могут использовать вариант Microsoft (старшие биты 110), а не вариант RFC 4122 — это влияет на порядок байт в бинарном представлении. Текстовое представление идентично.