한국어

UUID 생성기 — UUID v4·v7 한 번에 여러 개 만들기

UUID v4와 v7을 최대 1000개까지 만드는 생성기

브라우저에서 처리 · 서버로 전송되지 않음

소개

UUID는 128비트 식별자로, 중앙에서 번호를 나눠 주지 않아도 서로 겹치지 않게 만들 수 있어서 데이터베이스 키, 파일 이름, 요청 추적 번호에 널리 쓰입니다. 이 도구는 v4와 v7 두 가지를 최대 1000개까지 한 번에 만들어 줍니다.

사용법

  1. 버전을 고릅니다. v4는 완전 랜덤, v7은 시간순으로 정렬됩니다.
  2. 개수를 1에서 1000 사이로 정합니다.
  3. 필요하면 대문자나 하이픈 제거 옵션을 켭니다.
  4. 결과 목록이 바로 갱신됩니다. 복사 버튼을 누르면 줄바꿈으로 구분된 목록 전체가 복사돼요.
  5. 새 값이 필요하면 다시 생성을 누릅니다.

기준

  • 형식은 RFC 9562(이전 RFC 4122)를 따릅니다. 하이픈 포함 8-4-4-4-12자리 16진수입니다.
  • v4: 브라우저의 crypto.randomUUID로 만듭니다. 버전 자리는 4, variant 비트는 10이고 나머지 122비트가 랜덤입니다.
  • v7: 앞 48비트에 유닉스 시각(밀리초), 이어서 버전 7과 12비트 카운터, variant 10, 나머지 62비트 랜덤으로 구성합니다.
  • 정렬 보장(한 번에 생성한 묶음 안, 그리고 같은 브라우저 세션 안에서): 같은 밀리초에 여러 개를 만들면 12비트 카운터를 하나씩 올립니다. 시계가 멈추거나 거꾸로 가도 직전 값보다 작아지지 않게 하므로, 만든 순서대로 문자열 정렬을 하면 같은 순서가 됩니다. 한 밀리초에 카운터가 넘치면 다음 밀리초로 넘어가요.
  • 난수는 모두 crypto.getRandomValues 계열이며 Math.random을 쓰지 않습니다.

예시

항목 모양
v4 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx (y는 8, 9, a, b 중 하나)
v7 tttttttt-tttt-7xxx-yxxx-xxxxxxxxxxxx (t는 밀리초 시각, y는 8, 9, a, b 중 하나)
하이픈 제거 32자리 16진수 하나로 출력
대문자 같은 값을 A–F 대문자로 출력

v7 목록을 문자열 순으로 정렬해 보면 생성 순서와 같다는 것을 직접 확인할 수 있습니다.

언제 무엇을 쓸까

  • 요청 추적 번호, 임시 파일 이름, 테스트 데이터처럼 서로 겹치지만 않으면 되는 곳에는 v4가 간단합니다.
  • 로그나 이벤트 테이블의 기본키처럼 새 행이 항상 인덱스 끝에 붙는 편이 유리한 곳에는 v7을 권합니다. 무작위 v4는 삽입 위치가 흩어져 인덱스가 조각나기 쉽습니다.
  • 외부에 공개하는 ID에 생성 시각이 드러나면 곤란하다면 v4를 쓰세요. 이 도구에서 만든 값은 어디에도 기록되지 않습니다.

자주 묻는 질문

UUID v4와 v7 중 무엇을 써야 하나요?

단순히 겹치지 않는 식별자가 필요하면 v4로 충분합니다. 데이터베이스 기본키처럼 생성 순서대로 정렬되면 인덱스 효율이 좋아지는 곳에는 v7이 알맞아요.

UUID가 겹칠 수 있나요?

이론상 가능하지만 v4는 122비트가 랜덤이라 현실적인 규모에서는 충돌을 걱정하지 않아도 됩니다. v7도 같은 밀리초 안에서는 카운터로 순서와 유일성을 함께 지켜요.

v7에 들어 있는 시간은 노출되어도 괜찮나요?

v7의 앞 48비트는 생성 시각(밀리초)입니다. 생성 시점이 드러나도 문제없는 곳에만 쓰고, 시각을 숨겨야 하면 v4를 쓰세요.

이 UUID는 서버에 저장되나요?

아니요. 모두 브라우저의 암호 난수로 만들며 어디에도 전송하지 않습니다.

필요한 도구가 있나요?