UUID 생성기 — v4, v7, ULID, NanoID 생성 및 디코더

UUID v4나 시간순 v7, ULID, NanoID를 대량으로 생성하거나, ID를 붙여 넣어 버전과 포함된 타임스탬프를 확인하세요.

ID 검증 및 디코딩

UUID 버전 7 (Unix 시간 순서)

표준 형식017f22e2-79b0-7cc3-98c4-dc0c0c07398f
버전7 — Unix 시간 순서
변형RFC 9562 / RFC 4122
rand_a (12 bits)cc3
타임스탬프2022-02-22T19:22:22.000Z
Unix ms 1645557742000

ID는 crypto.getRandomValues로 브라우저에서 생성됩니다. 아무것도 전송되거나 저장되지 않습니다. 모든 무료 도구 보기.

문제를 발견하셨거나 개선할 점이 있나요? 모든 메시지를 읽고 빠르게 고칩니다.

이 UUID 생성기는 무작위 버전 4 UUID, RFC 9562에 정의된 시간순 버전 7 UUID, ULID, NanoID를 하나씩 또는 최대 10,000개까지 한 번에 만들어 복사하거나 다운로드할 수 있게 합니다. 모든 무작위 비트는 Math.random이 아니라 브라우저의 암호학적 생성기인 crypto.getRandomValues에서 나옵니다. 아래 디코더에 UUID, GUID, ULID를 넣으면 버전과 변형을 알려 주고, v1, v6, v7, ULID라면 생성된 시각도 알려 줍니다.

한 번에 생성한 버전 7과 ULID는 수천 개가 같은 밀리초를 공유하더라도 엄격하게 증가하므로, 데이터베이스 키답게 생성 순서대로 정렬됩니다. 버전 1은 제공하지 않습니다. 브라우저는 MAC 주소나 지속적인 클록 시퀀스에 접근할 수 없어서, 웹 페이지에서 만든 v1 UUID는 형식만 흉내 낼 뿐이기 때문입니다. v1이나 이름 기반 v3/v5 UUID가 필요하다면 사용하는 언어의 UUID 라이브러리로 생성하세요.

사용 방법

  1. 유형을 고르세요. 범용 무작위 ID는 v4, 데이터베이스 기본 키는 v7, 스택에서 쓴다면 ULID나 NanoID입니다.
  2. 필요한 개수를 최대 10,000까지 정하고 생성을 누르세요(또는 개수 칸에서 Enter).
  3. 형식을 고르세요. 대문자, 하이픈 없음, 또는 Windows 레지스트리와 .NET에서 쓰는 중괄호 감싸기입니다.
  4. 모두 복사하거나, 한 줄에 ID 하나씩인 텍스트 파일 또는 JSON 배열로 다운로드하세요.
  5. 기존 ID를 살펴보려면 디코더에 붙여 넣어 버전, 변형, 포함된 타임스탬프를 확인하세요.

자주 묻는 질문

UUID v4와 v7은 어떻게 다른가요?

v4 UUID는 구조 없는 122개의 무작위 비트입니다. v7 UUID는 맨 앞에 밀리초 단위 48비트 Unix 타임스탬프를 두고 그 뒤에 74개의 무작위 비트를 붙이므로, 생성 시각순으로 정렬됩니다. 이 순서 덕분에 v7은 데이터베이스 기본 키로 훨씬 유리합니다. 새 행이 인덱스의 무작위 위치가 아니라 끝에 들어가므로 페이지 분할이 줄고 삽입이 빠르게 유지됩니다. 대신 v7 ID는 생성 시각이 드러납니다.

두 UUID가 같아질 수도 있나요?

좋은 난수원에서 나왔다면 이론상으로는 가능하지만 실제로는 일어나지 않습니다. 무작위 비트가 122개이므로 충돌이 한 번이라도 일어날 확률이 50%가 되려면 v4 UUID를 약 270경(2.7 × 10^18)개 생성해야 합니다. 실제 중복은 버그에서 생깁니다. 약하거나 시드가 잘못된 난수 생성기, 복제된 가상 머신 상태, 값을 재사용하는 코드 같은 것입니다.

GUID와 UUID는 같은 것인가요?

네. GUID는 같은 128비트 식별자를 Microsoft에서 부르는 이름이며, 최신 GUID는 표준 UUID(보통 버전 4)입니다. 차이는 표기 방식뿐입니다. Windows 도구는 GUID를 {3F2504E0-4F89-41D3-9A0C-0305E82C3301}처럼 대문자로, 중괄호로 감싸 표시하는 경우가 많습니다. 이 형태에 맞추려면 대문자와 중괄호 옵션을 쓰세요.

UUID v7과 ULID 중 무엇을 써야 하나요?

둘 다 128비트이고, 시간순으로 정렬되며, 밀리초 타임스탬프를 담고 있습니다. UUID v7은 PostgreSQL의 uuid 타입이나 Java의 UUID 클래스처럼 UUID 열이나 타입이 이미 있는 곳이라면 어디든 맞습니다. ULID는 텍스트로 더 짧고(36자 대신 26자) 대소문자를 구분하지 않지만, 전용 라이브러리가 필요하고 텍스트나 바이너리로 저장해야 합니다. 데이터베이스와 언어가 이미 UUID를 지원한다면 v7이 더 간단한 선택입니다.

NanoID는 얼마나 길어야 하나요?

64자 URL 안전 알파벳에서 뽑은 기본 21자는 126비트의 무작위성을 주며, UUID v4의 122비트와 비슷합니다. ID 수가 적고 추측당해도 해가 없는 경우, 예를 들어 속도 제한이 있는 짧은 링크라면 더 짧아도 괜찮습니다. 길이 슬라이더 아래에 표시되는 비트 수로 무엇을 포기하는지 알 수 있습니다. 64개 기호 알파벳에서는 한 글자마다 6비트가 늘어납니다.

UUID가 언제 생성되었는지 알 수 있나요?

시간 기반 버전만 가능합니다. 디코더에 ID를 붙여 넣으세요. v7과 ULID는 앞쪽 48비트에 Unix 밀리초를 저장하고, v1과 v6은 1582년 10월 15일부터의 100나노초 간격 수를 저장합니다. v4 UUID에는 시간이 전혀 없고, 무작위 비트와 버전·변형 표시만 있습니다.

UUID 읽는 법: 버전과 변형

UUID는 16진수 32자리를 8-4-4-4-12로 묶어 씁니다. 두 위치가 UUID를 식별합니다. 세 번째 묶음의 첫 자리가 버전으로, 0190a3c4-1b2c-7d3e-8f40-0123456789ab에서는 7입니다. 네 번째 묶음의 첫 자리는 변형을 나타내며, 8, 9, a, b는 오늘날 거의 모든 UUID가 쓰는 표준 RFC 9562 구조를 뜻합니다.

• v1: 그레고리력 타임스탬프와 생성한 기기의 MAC 주소. 둘 다 노출되므로 새 시스템에서는 거의 쓰지 않습니다.

• v3와 v5: 결정적 방식으로, 네임스페이스와 이름에서 MD5(v3) 또는 SHA-1(v5)로 만듭니다. 같은 입력은 항상 같은 UUID를 줍니다.

• v4: 무작위. 대부분의 라이브러리의 기본값입니다.

• v6: 정렬되도록 타임스탬프 순서를 바꾼 v1. v1 사용자를 위한 전환 경로입니다.

• v7: Unix 밀리초 타임스탬프와 무작위 비트. 새 시스템에 권장되는 시간순 버전입니다.

• v8: 공급업체가 정의하는 구조. 버전과 변형 비트만 고정됩니다.

무작위 UUID가 데이터베이스를 느리게 하는 이유와 v7이 해결하는 것

대부분의 데이터베이스는 기본 키를 B-트리 인덱스에 저장합니다. 순차적인 키라면 새 행은 항상 메모리에 남아 있는 인덱스의 가장 오른쪽 페이지에 들어갑니다. 무작위 v4 UUID라면 삽입할 때마다 무작위 페이지에 들어가고, 인덱스가 메모리보다 커지면 삽입할 때 디스크에서 페이지를 읽고 분할하기 시작해 쓰기 처리량이 떨어집니다. 테이블 전체를 기본 키로 클러스터링하는 MySQL의 InnoDB가 이 영향을 가장 크게 받습니다.

UUID v7은 UUID의 장점(전역 고유성, 왕복 통신 없이 어떤 클라이언트에서든 생성 가능, 외부에 노출해도 안전)을 유지하면서 인덱스에서는 거의 자동 증가 열처럼 동작합니다. 2024년 5월에 발표된 RFC 9562는 새로운 시간 기반 ID로 v1과 v6보다 v7을 권장하며, PostgreSQL 18에는 내장 uuidv7() 함수가 추가되었습니다.

UUID는 36자 문자열이 아니라 16바이트 네이티브 타입(PostgreSQL의 uuid, MySQL의 BINARY(16))으로 저장하세요. 문자열로 저장하면 인덱스 크기가 두 배 이상 커집니다.

UUID vs ULID vs NanoID 한눈에 보기

• UUID v4: 36자, 무작위 122비트, 모든 라이브러리와 데이터베이스에서 지원, 정렬 불가.

• UUID v7: 36자, 48비트 밀리초 시간과 무작위 74비트, 정렬 가능, UUID를 지원하는 곳이면 어디서나 지원.

• ULID: Crockford Base32 26자, 48비트 시간과 무작위 80비트, 정렬 가능하고 대소문자 구분 없음, 라이브러리 필요.

• NanoID: 기본 21자, 알파벳과 길이 자유, URL 안전하고 간결, 타임스탬프 없음, 표준 바이너리 형식 없음.

관련 무료 도구

  • Unix 타임스탬프 변환기 — Epoch 초, 밀리초, 마이크로초, 나노초를 원하는 시간대의 날짜로, 또 그 반대로 변환하세요. 실시간 시계, 일괄 모드, 코드 스니펫 제공.
  • 비밀번호 생성기 — 강력한 무작위 비밀번호, 기억하기 쉬운 패스프레이즈, PIN을 생성하세요. 모든 처리가 브라우저에서 이루어지며 아무것도 전송되거나 저장되지 않습니다.
  • 해시 생성기 — 텍스트나 파일을 MD5, SHA-1, SHA-256, SHA-384, SHA-512, CRC32로 해시하고, 체크섬을 검증하거나 HMAC을 계산하세요. 파일은 기기 밖으로 나가지 않습니다.
  • JSON 포매터 — JSON을 보기 좋게 정렬하고, 압축하고, 검증하세요. 파싱 오류는 줄과 열 위치까지 알려 줍니다. 브라우저에서 실행, 업로드 없음.