UUID Generator
UUID v1/v4/v7 생성기 & 검증기
crypto.randomUUID() 기반의 122비트 암호학적 난수. 가장 널리 사용됨.
UUID v5 네임스페이스 생성기
SHA-1 해시 기반의 결정적(deterministic) UUID. 같은 네임스페이스 + 이름은 항상 동일한 UUID를 생성합니다.
UUID 버전 비교
| 항목 | v1 | v4 | v5 | v7 |
|---|---|---|---|---|
| RFC | 4122 | 4122 | 4122 | 9562 |
| 시간 기반 | 60비트 Gregorian | 없음 | 없음 | 48비트 Unix ms |
| 랜덤 비트 | 62비트 (노드+클럭) | 122비트 CSPRNG | SHA-1 결정적 | 62비트 CSPRNG |
| 정렬 가능 | 부분적 | 불가 | 불가 | 시간순 정렬 가능 |
| 결정적 | 아니오 | 아니오 | 예 (같은 입력 → 같은 UUID) | 아니오 |
| 충돌 위험 | 낮음 (클럭 기반) | 매우 낮음 | 없음 (결정적) | 매우 낮음 (시간 범위) |
| DB PK 적합도 | 보통 | 좋음 | 보통 | 최적 (권장) |
ULID vs UUID v7 비교
ULID(Universally Unique Lexicographically Sortable Identifier)는 UUID v7과 유사한 목적을 가지지만 다른 포맷을 사용합니다.
| 항목 | ULID | UUID v7 |
|---|---|---|
| 포맷 | 26자 Crockford Base32 | 36자 (하이픈 포함 hex) |
| 예시 | 01ARZ3NDEKTSV4RRFFQ69G5FAV | 018f4d2a-3b5e-7c8d-9e0f-1a2b3c4d5e6f |
| 타임스탬프 | 48비트 Unix ms (상위) | 48비트 Unix ms (상위) |
| 랜덤 비트 | 80비트 | 62비트 CSPRNG |
| 표준화 | 비공식 (커뮤니티 스펙) | IETF RFC 9562 공식 표준 |
| 단조 증가 보장 | 모노토닉 ULID로 가능 | ms 내에서 보장 안 됨 |
| URL 친화적 | 예 (특수문자 없음) | 부분적 (하이픈 포함) |
| DB 지원 | 라이브러리 필요 | PostgreSQL pg_uuidv7 등 |
| 추천 상황 | 사람이 읽기 쉬운 ID, URL 친화적 | 표준 UUID 호환, DB PK |
UUID Generator 소개
UUID 생성기는 세 가지 버전을 지원합니다. UUID v1(RFC 4122 타임스탬프)은 Date.now()로 60비트 Gregorian 타임스탬프를 구성하고 랜덤 클럭 시퀀스를 추가하며, MAC 주소 대신 랜덤 노드 ID를 사용해 프라이버시를 보호합니다. UUID v4(랜덤)는 crypto.randomUUID()으로 122비트 CSPRNG 난수를 생성합니다. UUID v7(RFC 9562, 최신)은 처음 6바이트에 48비트 Unix 밀리초 타임스탬프를 삽입하여 시간순 정렬이 가능하며 DB 기본 키에 최적입니다.
1~100개 UUID를 대량 생성하고 대문자/소문자, 하이픈 포함/제외 등 포맷 옵션을 설정할 수 있습니다. 개별 복사, 전체 복사, TXT 파일 다운로드 기능을 제공합니다. 내장 UUID 검증기는 붙여넣은 UUID의 버전, 변형(RFC 4122, NCS, Microsoft 등)을 감지하고 v1/v7에서 타임스탬프를 추출합니다.
v1/v4/v7 비교 테이블에서 RFC 사양, 시간 소스, 랜덤 비트, 정렬 가능성, 충돌 위험, DB 기본 키 적합도를 한눈에 비교할 수 있습니다. 모든 작업은 Web Crypto API로 브라우저에서만 실행되며 서버 요청이 없습니다.
주요 기능
- Gregorian 타임스탬프 + 랜덤 노드 기반 UUID v1 생성 (프라이버시 보호)
- crypto.randomUUID() 기반 122비트 CSPRNG 난수의 UUID v4 생성
- RFC 9562 표준 UUID v7 생성 (48비트 Unix ms 타임스탬프, 시간순 정렬)
- 한 번의 클릭으로 1~100개 UUID 대량 생성
- 포맷 옵션: 대문자/소문자 전환, 하이픈 포함/제외
- UUID 검증기: 버전, 변형 감지 및 v1/v7 타임스탬프 추출
- 전체 복사 및 TXT 다운로드로 일괄 내보내기
- v1/v4/v7 비교 테이블: RFC, 랜덤, 정렬, DB 적합도 비교
- Web Crypto API 기반 100% 클라이언트 사이드 - 서버 전송 없음, 계정 불필요
자주 묻는 질문
UUID v1, v4, v7의 차이점은 무엇인가요?
UUID v1은 60비트 Gregorian 타임스탬프를 사용하는 원래의 시간 기반 UUID(RFC 4122)입니다. UUID v4는 122비트 CSPRNG 랜덤으로 가장 널리 사용됩니다. UUID v7(RFC 9562, 2024)은 48비트 Unix 밀리초 타임스탬프에 랜덤을 결합하여 시간순 정렬과 강력한 랜덤을 모두 제공합니다. 신규 애플리케이션에는 v7이, 범용 고유 식별자에는 v4가 권장됩니다.
UUID 검증기는 어떻게 작동하나요?
검증기는 하이픈을 제거하고 정확히 32개 16진수 문자인지 확인합니다. 13번째 16진수(위치 12)로 버전(1-7), 17번째(위치 16)로 변형을 판별합니다: 8-b는 RFC 4122/9562, 0-7은 NCS, c-d는 Microsoft, e-f는 Future입니다. v1은 time-low, time-mid, time-hi 필드에서 Gregorian 타임스탬프를, v7은 처음 48비트에서 Unix 밀리초를 추출하여 ISO 8601 날짜로 변환합니다.
UUID v7이 DB 기본 키에 v4보다 나은 이유는?
UUID v7은 선행 바이트에 밀리초 타임스탬프를 삽입하여 새 UUID가 항상 이전보다 뒤에 정렬됩니다. 이 시간순 정렬은 PostgreSQL, MySQL, MongoDB에서 B-트리 페이지 분할을 줄이고 삽입 성능을 랜덤 v4 대비 2~10배 향상시킵니다. v4는 랜덤 인덱스 삽입으로 B-트리 페이지가 단편화되어 쓰기 증폭이 발생합니다.
UUID v1의 타임스탬프 인코딩은 v7과 어떻게 다른가요?
UUID v1은 1582년 10월 15일부터 100나노초 단위로 세는 60비트 Gregorian 타임스탬프를 사용합니다. 타임스탬프가 time-low, time-mid, time-hi 세 필드에 비연속적으로 분산되어 자연 정렬이 불가합니다. UUID v7은 단순한 48비트 Unix 밀리초 타임스탬프를 처음 6바이트에 연속 배치하여 바이트 순서대로 정렬됩니다. 이것이 v7이 현대 용도에서 v1을 대체한 이유입니다.
어떤 포맷 옵션을 사용할 수 있나요?
소문자(기본값, 예: 550e8400-e29b-41d4-a716-446655440000)와 대문자(550E8400-E29B-41D4-A716-446655440000) 전환이 가능합니다. 하이픈을 제거하면 32자 압축 형식(550e8400e29b41d4a716446655440000)이 됩니다. 옵션은 현재 배치의 모든 UUID에 적용되며 클립보드 복사와 TXT 다운로드 모두에 반영됩니다.
한 번에 몇 개의 UUID를 생성하고 내보낼 수 있나요?
클릭당 1~100개 UUID를 생성할 수 있습니다. 모든 결과는 스크롤 가능한 목록에 개별 복사 버튼과 함께 표시됩니다. "전체 복사"로 줄바꿈 구분 텍스트를 클립보드에 복사하거나, "TXT 다운로드"로 uuid-{버전}-{개수}.txt 파일을 저장할 수 있습니다. 파일은 클라이언트에서 생성되며 업로드 없이 다운로드됩니다.
프로덕션 식별자 생성에 안전한가요?
네. 모든 생성은 Web Crypto API(v4: crypto.randomUUID, v1/v7: crypto.getRandomValues)를 사용합니다. UUID가 서버로 전송, 기록, 저장되지 않습니다. 브라우저에서만 실행되어 데이터베이스 키, API 토큰, 세션 식별자 등 보안이 중요한 모든 고유 식별자 생성에 안전합니다.
각 버전의 충돌 확률은 어느 정도인가요?
UUID v4는 122개 랜덤 비트로 ~2.71 x 10^18개를 생성해야 50% 충돌 확률에 도달합니다. UUID v7은 밀리초당 62개 랜덤 비트를 가지며 충돌 위험이 매 밀리초마다 초기화됩니다. UUID v1은 클럭 시퀀스(14비트)에 따라 달라지며 랜덤 노드 ID 사용 시 매우 낮습니다. 세 버전 모두 실제 워크로드에서 충돌 확률은 사실상 0입니다.