UUID 생성기 — UUID v4·v7 한 번에 여러 개 만들기
UUID v4와 v7을 최대 1000개까지 만드는 생성기
브라우저에서 처리 · 서버로 전송되지 않음
소개
UUID는 128비트 식별자로, 중앙에서 번호를 나눠 주지 않아도 서로 겹치지 않게 만들 수 있어서 데이터베이스 키, 파일 이름, 요청 추적 번호에 널리 쓰입니다. 이 도구는 v4와 v7 두 가지를 최대 1000개까지 한 번에 만들어 줍니다.
사용법
- 버전을 고릅니다. v4는 완전 랜덤, v7은 시간순으로 정렬됩니다.
- 개수를 1에서 1000 사이로 정합니다.
- 필요하면 대문자나 하이픈 제거 옵션을 켭니다.
- 결과 목록이 바로 갱신됩니다. 복사 버튼을 누르면 줄바꿈으로 구분된 목록 전체가 복사돼요.
- 새 값이 필요하면 다시 생성을 누릅니다.
기준
- 형식은 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는 서버에 저장되나요?
아니요. 모두 브라우저의 암호 난수로 만들며 어디에도 전송하지 않습니다.