UUID 디코더

Decode and inspect UUID structure, version, and embedded data

예시 시도

UUID 입력

위에 UUID를 붙여넣어 검사하세요

UUID 구조

UUID(Universally Unique Identifier)는 하이픈으로 5개 그룹으로 나뉜 32개의 16진수 문자로 표현되는 128비트 값입니다:

형식
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
xxxxxxxx (8)8개의 16진수——32비트
xxxx (4)4개의 16진수——16비트
Mxxx (4)4개의 16진수——16비트. 첫 번째 자리 M이 UUID 버전(1-8)을 인코딩합니다.
Nxxx (4)4개의 16진수——16비트. 첫 번째 자리 N이 UUID 변형(RFC 4122, NCS, Microsoft, 또는 예약)을 인코딩합니다.
xxxxxxxxxxxx (12)12개의 16진수——48비트

버전변형은 모든 UUID에 존재가 보장되는 유일한 두 필드입니다. 다른 모든 필드는 버전에 따라 다릅니다.

버전 필드

버전 니블은 세 번째 그룹의 첫 번째 16진수(전체 문자열의 위치 14)입니다. 식별자를 생성하는 데 사용된 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 밀리초 타임스탬프를 인코딩합니다.

변형 필드

변형은 네 번째 그룹의 첫 번째 바이트의 상위 비트에 인코딩됩니다. UUID가 사용하는 레이아웃 및 바이트 순서 규칙을 식별합니다.

상위 비트첫 번째 16진수 범위변형설명
0xxx xxxx0x00–0x7FNCS 하위 호환성레거시 네트워크 컴퓨팅 시스템(NCS) UUID. 하위 호환성을 위해 예약.
10xx xxxx0x80–0xBFRFC 4122 / RFC 9562표준 RFC 4122 / RFC 9562 UUID 변형. 모든 현대 UUID 버전(v1-v8)에서 사용됩니다.
110x xxxx0xC0–0xDFMicrosoft 하위 호환성다른 바이트 순서를 가진 레거시 Microsoft COM/DCOM GUID. Windows COM 구성 요소에서 여전히 볼 수 있습니다.
111x xxxx0xE0–0xFF예약됨미래 정의를 위해 예약됨. 현재 UUID 버전에서는 사용되지 않습니다.

실제로 접하는 거의 모든 UUID는 RFC 4122 / RFC 9562 변형(비트 패턴 10xx xxxx, 네 번째 그룹의 첫 번째 바이트가 0x80–0xBF 범위)을 사용합니다. NCS, Microsoft COM 및 Reserved 변형은 현대 시스템에서 거의 볼 수 없는 레거시 형식입니다.

UUID 버전 참조

RFC 4122는 버전 1-5를 정의했습니다. RFC 9562(2024)는 버전 6, 7, 8을 추가했습니다:

버전이름표준설명
v1시간 기반RFC 4122타임스탬프(그레고리안 에포크, 100ns 정밀도) + MAC 주소. 호스트별 순차이지만 호스트 신원을 누출합니다.
v2DCE 보안RFC 4122UUID v1 기반, time_low 필드가 POSIX UID/GID로 대체됨. 레거시 DCE/RPC 시스템 외에서는 거의 사용되지 않습니다.
v3이름 기반 MD5RFC 4122결정론적: 네임스페이스 UUID + 이름 문자열의 MD5 해시. 동일한 입력은 항상 동일한 UUID를 생성합니다. v5를 선호하세요.
v4무작위RFC 4122암호학적으로 안전한 122비트 무작위성. 가장 일반적인 범용 UUID 버전.
v5이름 기반 SHA-1RFC 4122v3과 유사하지만 SHA-1 사용. MD5보다 충돌 방지력이 높습니다. 새 이름 기반 UUID에 v3보다 선호됩니다.
v6재정렬 시간RFC 9562UUID v1 타임스탬프 필드를 재정렬하여 UUID가 시간순으로 정렬 가능하게 합니다. RFC 9562에 정의됨.
v7Unix 시간RFC 9562상위 비트에 48비트 Unix 밀리초 타임스탬프 + 무작위 데이터. 정렬 가능하고 B-tree 인덱스 친화적. 새 시간 순서 ID에 선호.
v8사용자 정의RFC 9562자유 형식: 버전 및 변형을 제외한 모든 비트는 애플리케이션 정의. 생성 알고리즘이 지정되지 않았습니다.

UUID v1 타임스탬프 디코딩

UUID v1은 세 필드에 걸쳐 60비트 그레고리안 타임스탬프(1582년 10월 15일부터 100나노초 간격)를 내장합니다: time_low(비트 0-31), time_mid(비트 32-47), time_hi(비트 48-59). 이 도구는 이를 재조립하여 표준 UTC 날짜로 변환합니다.

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:클럭 시퀀스 필드(14비트)는 클럭이 뒤로 이동할 때 중복을 방지합니다. 노드 필드(48비트)는 일반적으로 생성 호스트의 MAC 주소입니다.

UUID v1은 민감하게 취급해야 합니다: 내장된 MAC 주소와 정확한 타임스탬프는 생성 머신과 생성 시간 모두를 식별할 수 있습니다.

UUID v7 타임스탬프 디코딩

UUID v7은 처음 48비트(첫 번째 그룹 + 두 번째 그룹의 처음 4자리)에 48비트 Unix 밀리초 타임스탬프를 내장합니다. 이 도구는 이 비트를 읽고 밀리초 정밀도로 UTC 날짜로 변환합니다.

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)

UUID v1과 달리 UUID v7 타임스탬프는 친숙한 Unix 에포크(1970년 1월 1일)를 사용하며 호스트 정보를 내장하지 않습니다. 나머지 74비트는 무작위입니다.

이 도구가 UUID 버전과 변형을 감지하는 방법

디코더는 표준 UUID 문자열의 위치 14(버전 니블)와 위치 19(변형 니블)를 읽습니다. 외부 상태나 컨텍스트가 필요 없습니다——모든 정보는 UUID 문자열에 자기 포함됩니다.

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는 모두 0입니다. RFC 4122에서 'UUID 없음'을 의미하는 센티널 값으로 정의됩니다——null과 유사합니다. 유효한 생성된 UUID가 아닙니다.

Max UUID

max UUID ffffffff-ffff-ffff-ffff-ffffffffffff는 모두 1(모든 바이트에서 0xFF)입니다. RFC 9562에 정의되며 nil UUID의 보완으로 최대 센티널 값으로 사용됩니다.

자주 묻는 질문

UUID의 버전을 어떻게 알 수 있나요?
표준 UUID 문자열의 위치 14(세 번째 하이픈 구분 그룹의 첫 번째 문자)를 확인하세요. 그 단일 16진수가 버전 번호입니다: 1, 2, 3, 4, 5, 6, 7, 또는 8. 이 도구에 UUID를 붙여넣으면 버전을 디코딩합니다.
UUID를 디코딩하여 원래 데이터를 복구할 수 있나요?
버전에 따라 다릅니다. UUID v1과 v7은 완전히 복구 가능한 타임스탬프를 내장합니다. UUID v1은 MAC 주소도 내장합니다. UUID v3과 v5는 단방향 해시입니다——UUID에서 원래 이름을 복구할 수 없습니다. UUID v4는 순수하게 무작위입니다——복구할 것이 없습니다.
UUID에서 '변형'이란 무엇을 의미하나요?
변형 필드는 UUID의 바이트 레이아웃과 해석 규칙을 식별합니다. 거의 모든 UUID는 RFC 4122 변형(상위 비트 10)을 가지며 위치 19에서 16진수 8, 9, a, 또는 b로 인코딩됩니다.
일부 UUID가 다른 것과 다르게 보이는 이유는 무엇인가요?
시각적 차이는 버전 니블(위치 14)과 변형 니블(위치 19)에 있습니다. 예를 들어 UUID v4는 항상 위치 14에 4가 있고 UUID v7은 항상 7이 있습니다.
nil UUID는 빈 UUID와 같은가요?
개념적으로는 그렇습니다——nil UUID(모두 0)는 UUID의 부재를 나타내는 데 사용되며 null과 유사합니다. 무작위로 생성된 UUID가 아니며 실제 식별자로 저장해서는 안 됩니다.
UUID가 유효하지 않을 수 있나요?
UUID는 구문적으로 유효(올바른 형식)하지만 의미적으로 비정상일 수 있습니다——예를 들어 버전 니블이 0이거나 변형이 11x(예약)인 경우. nil UUID와 max UUID는 구문적으로 유효하지만 센티널 값입니다.
UUID와 GUID의 차이는 무엇인가요?
GUID(Globally Unique Identifier)는 동일한 개념의 Microsoft 명칭입니다. GUID는 동일한 RFC 4122 128비트 형식을 따릅니다. 유일한 실질적 차이는 레거시 Microsoft GUID가 RFC 4122 변형 대신 Microsoft 변형(상위 비트 110)을 사용할 수 있다는 것입니다.