UUID v7 타임스탬프 추출

UUID v7 문자열을 붙여넣기만 하면 앞쪽 48비트에 담긴 밀리초 단위 타임스탬프를 추출해 UTC 날짜와 시간으로 복원합니다. v7이 아닌 버전이나 variant 이상도 감지하며, 자매 도구인 "UUID v7 생성"의 역변환으로 사용할 수 있습니다.

UUID v7의 비트 레이아웃

비트 범위 필드 설명
0-47 unix_ts_ms Unix 에포크로부터의 밀리초를 빅엔디안으로 저장. 이 도구가 추출하는 값입니다.
48-51 version UUID의 버전 번호. v7의 경우 0111(16진수로 7)로 고정됩니다.
52-63 rand_a 12비트의 무작위 값. 일부 구현에서는 동일 밀리초 내 순서 보존에 사용합니다.
64-65 variant RFC 4122/9562의 variant를 나타내는 고정값 10. 16진수로는 첫 자리가 8/9/a/b가 됩니다.
66-127 rand_b 충돌 방지를 위한 엔트로피를 제공하는 62비트의 무작위 값.

사용 팁

  • 모든 해독 처리는 브라우저 내 JavaScript에서 완전히 이루어지며, 입력한 UUID가 toolbase.cc 서버로 전송되는 일은 없습니다.
  • 데이터베이스 기본 키에 UUID v7을 사용한다면, 별도의 created_at 컬럼이 없어도 키를 여기에 붙여넣기만 하면 해당 레코드의 생성 시각을 복원할 수 있습니다.
  • v7이 아닌 UUID(예: v4)를 입력하면 경고가 표시되지만, 앞쪽 48비트에서 기계적으로 추출한 참고값은 계속 표시되므로 형식 차이를 학습하는 용도로도 활용할 수 있습니다.
  • UUID를 생성해야 한다면 자매 도구인 "UUID v7 생성"을 사용하세요. 이 도구로 바로 역변환할 수 있는 형식의 UUID를 생성합니다.
  • 로그 파일이나 API 응답에 포함된 UUID v7을 하나씩 붙여넣으면 디버깅 중 외부 시스템에서 이벤트가 발생한 시각을 추정하는 데도 활용할 수 있습니다.

자주 묻는 질문

UUID v7은 RFC 9562로 표준화되어 있으며, 128비트 중 앞쪽 48비트에 밀리초 단위 Unix 타임스탬프가 빅엔디안 순서로 고정 삽입되어 있습니다. 따라서 앞쪽 16진수 12자리를 숫자로 변환해 밀리초로 해석하기만 하면 생성 시각을 복원할 수 있습니다.

UUID v4는 완전히 무작위 값이므로, 여기서 추출한 "타임스탬프"는 실제 생성 시각과 무관한 의미 없는 숫자가 됩니다. 이 도구는 버전 자리를 검사해 경고를 표시하지만, 참고를 위해 앞쪽 48비트에서 기계적으로 추출한 값 자체는 계속 표시합니다.

UUID v7 사양상 정밀도는 밀리초 단위입니다. 동일한 밀리초 내에 여러 UUID v7이 생성되면 앞쪽 48비트 값은 동일해지며, 그 생성 순서까지는 복원할 수 없고 구분은 전적으로 rand_a·rand_b의 무작위 값에 맡겨집니다.

RFC 4122/9562를 준수하는 UUID는 4번째 그룹의 첫 16진수 자리가 8·9·a·b 중 하나여야 합니다. 이 값이 그 외(0-7 또는 c-f)라면 독자적인 ID 생성 로직이거나 비트가 손상되었을 가능성이 있어 경고를 표시합니다.
ツールくん

여담 ― UUID에 "시계"를 내장한다는 것

UUID v7이 획기적인 이유는 식별자 자체가 생성 시각이라는 정보를 영구적으로 담고 있다는 점입니다. 기존 UUID v4에서는 레코드가 언제 생성되었는지 알려면 별도의 created_at 컬럼이 반드시 필요했지만, 테이블의 기본 키에 UUID v7을 사용한다면 ID 문자열만으로 생성 시각을 기계적으로 복원할 수 있습니다. 이 도구는 자매 도구인 "UUID v7 생성"의 역변환으로서 그 복원 과정을 제공합니다.

이러한 특성은 장애 조사나 데이터 마이그레이션 현장에서 특히 유용합니다. 예를 들어 오래된 로그에 남은 주문 ID나 외부 시스템에서 받은 이벤트 ID가 UUID v7 형식이라면, 전용 타임스탬프 컬럼을 참조하지 않고도 "이 레코드가 대략 언제 생성되었는지"를 즉시 확인할 수 있습니다. created_at 컬럼이 없는 구형 시스템 조사나, 다른 회사가 발급한 UUID v7 분석에도 응용할 수 있습니다.

다만 주의할 점도 있습니다. UUID v7의 타임스탬프는 어디까지나 생성 측의 시계에 의존하므로, 생성 서버의 시각이 어긋나 있으면 추출 결과도 어긋납니다. 또한 이 도구는 UUID v4 같은 다른 버전의 값에서도 "타임스탬프처럼 보이는 값"을 기계적으로 추출해 버리는데, 이는 어디까지나 비트 위치를 해석한 것일 뿐 의미 있는 값임을 보장하지 않는다는 점을 염두에 두고 사용하시기 바랍니다.

→ 모든 여담 보기