홈 › 개발·웹 도구

UUID·ULID 생성기

새 데이터베이스라면 시간순으로 정렬되는 UUID v7이나 ULID가 색인(인덱스)에 유리해요.

입력한 내용은 서버로 보내지 않고 이 기기에서만 처리돼요

UUID와 ULID

UUID(범용 고유 식별자, 윈도우에서는 GUID)는 8-4-4-4-12 모양의 32자리 16진수(128비트) ID예요. 중앙 서버에 물어보지 않고도 어느 기기에서 만들든 서로 겹치지 않아서 데이터베이스의 기본 키, 주문 번호, 업로드 파일 이름, 분산 시스템의 메시지 ID에 널리 쓰여요. 2024년에 나온 표준 RFC 9562가 버전 1~8을 정해요.

어떤 것을 만들까요

UUID v4는 122비트가 완전히 무작위라서 가장 널리 쓰여요. 10억 개를 만들어도 겹칠 확률은 사실상 0이에요. UUID v7은 앞 48비트에 만든 시각(유닉스 밀리초)을 넣어서 만든 순서대로 정렬돼요. 데이터베이스 색인(B-트리)에 새 값이 끝에 차례로 붙어 v4보다 저장·조회가 효율적이에요. ULID는 같은 아이디어(48비트 시각 + 80비트 무작위)를 26자의 Crockford Base32로 적어서 짧고, 글자 순서로 정렬해도 시간순이에요.

난수는 브라우저의 암호용 난수(crypto.getRandomValues)를 쓰고, 버전·변형 비트는 RFC 9562에 맞춰 넣어요. 만든 값은 파이썬 uuid 모듈로 버전·변형·시각을 검증했어요. 같은 밀리초에 여러 개를 만들면 v7·ULID의 시각 부분은 같고 무작위 부분으로 구분돼요(같은 밀리초 안에서는 순서가 보장되지 않아요).

해석하기

‘해석하기’ 탭에 UUID·GUID(중괄호·하이픈·urn:uuid: 머리말 상관없이)나 ULID를 붙여넣으면 버전과 변형을 알려 줘요. v1·v6(그레고리력 1582년부터 센 100나노초 단위)과 v7·ULID(유닉스 밀리초)는 안에 든 생성 시각을 한국 시간으로 보여 주고, v1·v6은 노드(옛날에는 기기의 MAC 주소) 값도 보여 줘요. v1은 기기 주소가 드러날 수 있어서 요즘은 잘 쓰지 않아요.

참고한 자료

자주 묻는 질문

UUID가 겹칠 수 있나요?

이론적으로는 가능하지만 v4는 경우의 수가 2의 122제곱이라 현실에서는 겹치지 않는다고 봐도 돼요.

비밀번호·인증 토큰으로 써도 되나요?

v4는 암호용 난수로 만들지만 형식이 정해진 ID예요. 비밀 값에는 전용 비밀번호·토큰 생성기를 쓰는 게 좋아요.

v7과 ULID는 서로 바꿀 수 있나요?

둘 다 128비트라 바이트로 옮길 수는 있지만 버전 비트 위치가 달라 그대로 같은 값이 되지는 않아요.

함께 쓰면 좋은 도구