UUID 생성기
형식 옵션
비밀번호
무료 온라인 UUID/GUID/ULID/NanoID 생성기. 5가지 고유 ID 형식, 최대 100개 일괄 생성, 형식 커스터마이징, UUID 검증·식별을 지원합니다. 브라우저를 열자마자 바로 사용할 수 있어 데이터베이스 기본키와 테스트 데이터 생성에 적합합니다.
관련 추천
UUID란 무엇인가요?
UUID(Universally Unique Identifier, 범용 고유 식별자)는 개방형 소프트웨어 재단(OSF)에서 표준화하고 RFC 4122에 정의된 128비트 식별자 표준입니다. 분산 시스템의 모든 요소가 중앙 제어부에서 ID를 지정받지 않고도 고유한 식별 정보를 가질 수 있도록 하는 것이 목적입니다.
표준 UUID는 `550e8400-e29b-41d4-a716-446655440000`과 같은 형태로, 32개의 16진수 숫자로 구성되며 하이픈으로 5개 구간(8-4-4-4-12)으로 나뉩니다. 이론적으로 UUID v4의 충돌 확률은 약 1/10^36으로, 초당 10억 개의 UUID를 생성했을 때 충돌이 발생할 확률이 50%에 도달하는 데 약 800년이 걸리는 수치이며, 실제 애플리케이션에서는 고유하다고 간주할 수 있습니다.
UUID는 데이터베이스 기본키, 분산 추적 ID, 요청 Request-ID, 로그 Trace-ID, 파일 고유 이름 지정, 테스트 데이터 ID, 세션 식별자 등의 시나리오에서 널리 사용되며, 거의 모든 주요 프로그래밍 언어에 UUID 생성 라이브러리가 내장되어 있습니다.
사용 사례
- 데이터베이스 설계 시 UUID v4를 테이블 레코드 기본키로 생성하여 자동증가 ID로 인한 데이터량 노출 방지
- 분산 시스템 또는 마이크로서비스 아키텍처에서 ULID를 정렬 가능한 전역 고유 요청 추적 ID로 사용
- API 개발 및 연동 테스트 시 UUID를 일괄 생성하여 테스트 데이터와 모의 주문번호·사용자 ID로 사용
- 프론트엔드 단축 URL이나 공유 링크에서 NanoID를 UUID 대신 사용하여 더 짧고 깔끔하며 URL 인코딩 불필요
- UUID v5를 사용하여 고정 네임스페이스에서 결정론적 ID를 생성하고 동일한 입력이 항상 동일한 출력을 내도록 보장
- 디버그 로그나 타사 문서에서 알 수 없는 형식의 ID를 발견했을 때 검증 기능으로 ID 유형과 버전 식별
이용 방법
- 상단 카드에서 생성할 ID 유형을 선택: UUID v4(권장), v1, v5, ULID 또는 NanoID
- UUID v5를 선택한 경우 네임스페이스용 문자열을 입력. 다른 ID는 바로 형식 옵션 설정 가능
- 필요에 따라 대소문자와 하이픈 스위치를 전환하고, 퀵 버튼 또는 슬라이더로 일괄 생성 수량(1~100) 설정
- 생성 버튼을 클릭하여 결과 목록 확인. 개별 복사, 전체 원클릭 복사, 또는 TXT/JSON 파일로 내보내기 가능
- 기존 ID를 검증하려면 '검증' 탭으로 전환하여 ID 문자열을 붙여넣으면 유형과 버전 정보 확인 가능
주요 기능
- 5가지 ID를 한 페이지에서 지원: UUID v1(타임스탬프), v4(랜덤), v5(네임스페이스), ULID(정렬 가능), NanoID(URL 안전)를 동시 지원. 하나의 도구로 다양한 기술 스택의 요구 충족
- UUID 검증·식별: 검증 탭으로 전환하여 아무 ID나 붙여넣으면 UUID 버전 또는 ULID/NanoID 형식을 식별. 디버깅 시 빠른 문제 해결
- 최대 100개 일괄 생성: 1~100개 원하는 수량을 한 번에 생성. 테스트 데이터 작성 시 일일이 수동 복사할 필요 없음
- 유연한 형식 전환: UUID의 대소문자와 하이픈을 토글하여 데이터베이스, URL, 설정 파일 등 다양한 시나리오의 형식 요구사항에 맞춤
- 내보내기 및 로컬 히스토리: 전체 원클릭 복사, TXT/JSON 파일 내보내기 지원. 생성 이력은 로컬에 저장되어 언제든 복원 가능하며 일괄 작업이 더 효율적
- 클라이언트 사이드 안전 난수: 브라우저 crypto API로 암호학적으로 안전한 난수를 생성. ID는 기기를 떠나지 않으며 오프라인에서도 작동
코드 예제
JavaScript로 UUID v4 생성
javascript최신 브라우저와 Node.js 14.17+에는 Web Crypto API가 내장되어 있어 서드파티 라이브러리 없이 직접 UUID v4를 생성할 수 있습니다.
// 최신 브라우저 / Node.js 19+
const id = crypto.randomUUID();
console.log(id); // "550e8400-e29b-41d4-a716-446655440000"
// Node.js 14.17 - 18.x
const crypto = require('crypto');
const id = crypto.randomUUID();Python으로 UUID 일괄 생성
pythonPython 표준 라이브러리 uuid 모듈을 사용하여 여러 UUID v4를 일괄 생성합니다. 테스트 데이터 준비에 적합합니다.
import uuid
# 단일 UUID 생성
uid = uuid.uuid4()
print(uid)
# 10개 일괄 생성
for _ in range(10):
print(uuid.uuid4())
# 하이픈 없는 대문자 UUID 생성
print(uuid.uuid4().hex.upper())셸 명령줄에서 UUID 생성
bashLinux/macOS 터미널에서 빠르게 UUID를 생성합니다. 셸 스크립트에서 사용하기 적합합니다.
# Linux uuidgen # macOS uuidgen | tr 'A-Z' 'a-z' # 시스템 랜덤 파일에서 직접 읽기(가장 원시적인 방법) cat /proc/sys/kernel/random/uuid
유일 ID는 어떤 방식을 선택해야 할까?
UUID만이 유일한 선택은 아닙니다. 데이터베이스 자동증가 ID와 Snowflake도 주요 기본키 방식입니다. 먼저 '데이터 규모, 전역 고유성 필요 여부, 시간순 정렬 필요 여부'를 살펴본 후 구체적인 방식을 선택하면 많은 시행착오를 피할 수 있습니다.
UUID v1 / v4 / v5 / ULID / NanoID: 어떤 것을 선택할까?
5가지 ID는 데이터 규모, 정렬성, 문자 길이에서 각각 장단점이 있습니다. '어디에 사용하는지 + 정렬이 필요한지 + URL에서 직접 사용하는지'를 기준으로 결정하면 숫자 자체로 결정하는 것보다 신뢰할 수 있습니다.
| 방식 | 권장 시나리오 | 정렬성 | 길이 | 권장도 |
|---|---|---|---|---|
UUID v1 | 시간순 정렬이 필요하고 MAC 주소와 생성 시간 노출을 허용할 수 있는 내부 시스템 | 시간순 정렬 | 36자 | ⚠ 일반적으로 비권장 (개인정보 노출) |
UUID v4 | 데이터베이스 기본키, 범용 식별자, 대부분의 비즈니스 시나리오 | 비정렬 (랜덤) | 36자 | ✓ 범용 첫 번째 선택 |
UUID v5 | 결정론적 출력(동일한 입력 → 동일한 UUID)이 필요한 시나리오 | 비정렬 | 36자 | ✓ 네임스페이스 고정 시 권장 |
ULID | 분산 시스템 기본키, 로그 추적, 시간순 정렬이 필요한 인덱스 | 시간순 정렬 (앞 48비트가 밀리초 타임스탬프) | 26자 | ✓ 분산 시스템 첫 번째 선택 |
NanoID | 단축 URL, 쿠키 식별자, 프론트엔드 JS 참조 | 비정렬 (랜덤) | 21자 (기본값) | ✓ 짧은 ID 시나리오 첫 번째 선택 |
UUID vs 데이터베이스 자동증가 ID vs Snowflake ID: 기본키 방식 선택 가이드
이 세 가지는 백엔드 기본키의 가장 일반적인 방식으로, 시스템의 확장성, 동시성, 성능 특성을 결정합니다. '데이터 규모 / 전역 고유성 필요 여부 / 가독성 필요 여부'로 결정하면 나중의 아키텍처 변경을 피할 수 있습니다.
| 차원 | UUID | 데이터베이스 자동증가 ID | Snowflake |
|---|---|---|---|
전역 고유성 | ✓ 예 (이론적으로) | ✗ 아니오 (샤딩 시 중복 발생) | ✓ 예 (데이터센터+머신 ID로 보장) |
데이터량 노출 | ✓ 노출하지 않음 | ✗ 직접 노출 (1, 2, 3 순증가로 실제 데이터량 노출) | ⚠ 타임스탬프 비트로 생성 시간 노출 (총량은 직접 노출되지 않음) |
정렬성 | ✗ 비정렬 (ULID는 예외) | ✓ 단조 증가 (B-Tree 친화적) | ✓ 추세적 증가 (같은 밀리초 내 순서 보장) |
샤딩 지원 | ✓ 기본 지원 | ✗ 발번기 도입 또는 추가 작업 필요 | ✓ worker ID로 구분 |
저장 비용 | ⚠ 높음 (BINARY(16) 16바이트) | ✓ 낮음 (BIGINT 8바이트) | ✓ 낮음 (BIGINT 8바이트) |
적합한 시나리오 | 다중 서비스/분산 기본키, 외부 노출 식별자, 데이터량에 민감한 비즈니스 | 단일 앱, 관리 시스템, 전역 고유성 불필요 | 고동시성 IM, 주문 번호, 메시지 ID (자체 구현 필요) |
Best Practices
운영 데이터베이스 기본키는 UUID v4 또는 ULID를 우선 선택하고 v1은 피하기
UUID v1의 뒤쪽 48비트는 MAC 주소이고, 앞쪽 48비트는 100ns 정밀도의 타임스탬프입니다——**이 두 필드로부터 머신 지문과 생성 시간을 복원할 수 있습니다**. v1은 RFC 4122에서 'only when backward compatibility is needed' (하위 호환성이 필요할 때만)라고 명시되어 있습니다. 운영 환경에서는 v4 (랜덤) 또는 ULID (정렬 가능)를 우선 선택해야 하며, v1은 디버깅이나 생성 머신 추적이 필요한 경우에만 제한적으로 사용합니다. **절대** v1을 외부에 노출되는 사용자 ID, 디바이스 ID, 주문 번호로 사용하지 마세요.
UUID v1, v4, v5는 어떻게 선택해야 하나요?UUID 길이 128 bit ≠ 엔트로피: v4의 실제 엔트로피는 122 bit
UUID v4는 총 128비트이지만, **앞쪽 4비트는 버전 번호(0100 고정), 뒤쪽 2비트는 변형 번호(10 고정)**로, 실제로 랜덤한 부분은 122비트에 불과합니다. 이는 RFC 4122에서 규정된 형식 제약이며, **'128비트 전체가 랜덤'이라고 주장하는 UUID v4 라이브러리는 잘못된 구현**입니다. 또한 v4의 뒤쪽 64비트 중 7번째 바이트의 상위 2비트도 변형 필드라서 실제 엔트로피는 더 낮습니다. 시스템 설계 시 122비트로 안전성을 계산하고(128비트이 아니라) 충돌 위험을 과소평가하지 마세요.
RFC 4122 - UUID 명세UUID 저장 시 반드시 BINARY(16) 컬럼을 사용하고 VARCHAR(36)은 피하기
UUID v4 문자열 `550e8400-e29b-41d4-a716-446655440000`은 보기에는 간결해 보이지만, 실제 VARCHAR(36)에서는 36바이트 + 길이 2바이트 = 38바이트로, **BINARY(16)보다 2.4배의 저장 공간을 차지**합니다. MySQL/PostgreSQL/MSSQL 모두 UUID 함수를 내장하여 BINARY(16) 직접 쓰기를 지원하며, 인덱스 크기도 절반으로 줄어듭니다. 테이블이 1억 건을 넘으면 VARCHAR(36) 기본키 인덱스로 B-Tree 높이가 1~2단 증가하여, **쿼리 성능이 30~50% 저하**됩니다. 프론트엔드 표시 시 문자열로 변환하고, 비즈니스 계층에서는 항상 BINARY(16)로 전송하세요.
UUID / ULID / NanoID 비교표URL 시나리오에서는 NanoID 또는 하이픈 없는 UUID를 사용하여 URL 인코딩을 피하기
UUID v4의 문자 집합은 `[0-9a-f-]`이며, **하이픈 -는 URL path에서 두 단계의 URL 인코딩이 필요**합니다(먼저 %2D로 이스케이프하고, 다시 %252D로 이스케이프). 매우 보기 흉합니다. 두 가지 해결책이 있습니다: **(1) URL에서는 NanoID를 직접 사용**(기본 21자 URL 안전); **(2) UUID v4 + 하이픈 끄기**로 32자리의 순수 hex를 출력하여 URL path segment로 인코딩 없이 사용. 쿠키 시나리오에서도 NanoID(A-Za-z0-9_-) 또는 하이픈 없는 UUID를 우선하여 `+` `/` `=` 문자(Base64 문자 집합)를 피하세요.
생성된 UUID에서 하이픈을 제거하거나 대문자로 변환할 수 있나요?일괄 생성 후에는 반드시 중복 제거, 생성기 버그로 중복이 발생할 수 있음
UUID v4의 충돌 확률은 약 1/10^36으로, 이론적으로는 중복 제거가 필요 없습니다——**하지만 실무에서는 이론을 믿지 마세요**. Linux 커널 RNG 장애, Node.js 초기 버전의 `crypto.randomUUID` 구현 버그, Cloud VM 시작 시 엔트로피 부족 등 실제 사고로 인해 일괄 생성된 UUID에 중복 값이 포함된 적이 있습니다. **운영 환경에서 10만 개 이상의 UUID를 일괄 생성한 후에는 반드시 `SELECT id, COUNT(*) FROM t GROUP BY id HAVING COUNT(*) > 1`로 중복 검증을 수행하고**, 문제를 발견하면 즉시 생성기 버전을 롤백하세요. 이는 데이터 마이그레이션, 일괄 가져오기 시나리오에서 값비싼 교훈으로 얻은 모범 사례입니다.
한 번에 여러 UUID를 일괄 생성할 수 있나요?자주 묻는 질문
UUID와 GUID의 차이는 무엇인가요?
UUID(Universally Unique Identifier)와 GUID(Globally Unique Identifier)는 본질적으로 동일한 것이며 부르는 이름만 다릅니다. UUID는 IETF 표준(RFC 4122)의 공식 명칭이고, GUID는 마이크로소프트가 Windows 생태계에서 관습적으로 사용하는 명칭입니다. 두 형식은 완전히 동일하며, 모두 `550e8400-e29b-41d4-a716-446655440000`과 같은 형태의 128비트 식별자입니다. 이 도구로 생성하는 표준 UUID는 GUID가 필요한 모든 시나리오에서 그대로 사용할 수 있습니다.
UUID v1, v4, v5는 어떻게 선택해야 하나요?
UUID v1은 타임스탬프와 MAC 주소를 기반으로 생성되어 시간 순서대로 정렬 가능하고 추적할 수 있지만, MAC 주소가 노출될 수 있습니다. UUID v4는 완전히 난수 기반으로 생성되며 가장 널리 사용되고 안전한 선택으로, 대부분의 기본키와 식별자 시나리오에 적합합니다. UUID v5는 네임스페이스 기반의 해시 버전(SHA-1)으로, 동일한 네임스페이스+동일한 이름은 항상 동일한 UUID를 생성하여 결정론적 출력이 필요한 시나리오에 적합합니다. 일반적인 개발에서는 UUID v4를 기본으로 선택하면 됩니다.
ULID와 NanoID가 UUID v4에 비해 어떤 장점이 있나요?
ULID(26자)는 UUID(하이픈 포함 36자)보다 짧고 사전순으로 정렬 가능하여 데이터베이스 인덱스와 로그 추적에 적합합니다. NanoID(기본 21자)는 더 짧고 빠르며 URL 안전 문자를 사용하여 URL과 쿠키에서 이스케이프가 필요 없고 UUID보다 약 30% 더 작습니다. 세 가지 모두 충돌 확률이 극히 낮지만, 분산 시스템에서는 ULID의 정렬 가능성이 유리하고 NanoID는 프론트엔드/URL 시나리오에서 더 편리합니다.
한 번에 여러 UUID를 일괄 생성할 수 있나요?
네, 가능합니다. 이 도구는 1~100개 일괄 생성을 지원하며, 개수 버튼이나 슬라이더로 수량을 설정한 후 원클릭으로 생성할 수 있습니다. 테스트 데이터 생성, 일괄 가져오기, 스크립트용 고유 ID 준비에 적합합니다. 생성 후 모든 결과를 원클릭으로 복사하거나 TXT 텍스트 또는 JSON 파일로 내보낼 수 있습니다.
일괄 생성 사용 가이드문자열이 유효한 UUID인지 검증할 수 있나요?
네, 가능합니다. '검증' 탭으로 전환하여 임의의 문자열을 입력하면 도구가 자동으로 식별·검증합니다. 표준 UUID(v1/v3/v4/v5)는 구체적인 버전 번호를 알려주며, ULID(26자 Crockford Base32 형식)와 NanoID(21자 URL 안전 문자) 형식도 식별할 수 있어 개발·디버깅 시 ID 형식 문제를 빠르게 파악하는 데 매우 편리합니다.
온라인으로 UUID를 생성하면 서버에 유출되나요? 안전한가요?
완전히 안전합니다. 이 도구의 모든 ID 생성과 검증은 사용자의 로컬 브라우저에서 JavaScript로 실행되며, crypto.getRandomValues()로 암호학적으로 안전한 난수를 사용합니다. 생성된 ID가 어떤 서버로도 전송되지 않으며, 생성 이력이 클라우드에 저장되지도 않습니다. 오프라인에서도 정상 작동하므로 기업 인트라넷과 민감한 프로젝트에서도 안심하고 사용할 수 있습니다.
생성된 UUID에서 하이픈을 제거하거나 대문자로 변환할 수 있나요?
네, 가능합니다. UUID v1/v4/v5의 경우 '대문자' 스위치로 출력 대소문자를 전환하고, '하이픈' 스위치로 중간의 하이픈을 제거할 수 있습니다(URL, 설정 파일, 하이픈 없는 형식을 요구하는 일부 데이터베이스에서 사용하기 편리합니다). ULID와 NanoID는 기본적으로 하이픈이 없으며 대소문자 전환도 지원합니다.
왜 명령줄 대신 온라인 도구로 UUID를 생성하는 것을 추천하나요?
명령줄 도구(Linux의 uuidgen, Python의 uuid 모듈 등)는 개발 환경이 필요하지만, 온라인 도구는 브라우저를 열자마자 바로 사용할 수 있어 소프트웨어 설치가 필요 없습니다. 또한 이 도구에는 UUID 버전 식별, 일괄 내보내기, 로컬 히스토리 등의 부가 기능도 통합되어 있어 기기 간 작업(비기술 동료를 위해 ID를 생성하는 경우 등)이나 갑자기 필요할 때 더 편리합니다.
용어집
- UUID
- Universally Unique Identifier(범용 고유 식별자). 128비트 길이, RFC 4122 표준. 주요 버전으로는 v1(타임스탬프+MAC), v4(랜덤), v5(SHA-1 해시)가 있다.
- GUID
- Globally Unique Identifier(전역 고유 식별자). 마이크로소프트에서 UUID를 부르는 명칭으로, 형식과 용도가 완전히 동일하다.
- ULID
- Universally Unique Lexicographically Sortable Identifier(사전순 정렬 가능한 범용 고유 식별자). 26자로 Crockford Base32 인코딩을 사용하며, 처음 48비트가 타임스탬프로 생성 시간순으로 정렬 가능하다.
- NanoID
- 경량 고유 ID 생성 방식. 기본 21개의 URL 안전 문자(A-Za-z0-9_-)를 사용하며, UUID보다 짧고 빨라 프론트엔드와 URL 시나리오에 적합하다.
- UUID v1
- 타임스탬프와 MAC 주소 기반의 UUID 버전. 시간순 정렬이 가능하지만 MAC 주소와 생성 시간이 노출될 수 있어 v4보다 보안성이 낮다.
- UUID v4
- 완전히 난수 기반으로 생성되는 UUID 버전. 가장 널리 사용되며 충돌 확률이 극히 낮아 개발에서 기본 선택이다.
- UUID v5
- SHA-1 해시 기반의 네임스페이스 UUID 버전. 동일한 네임스페이스+동일한 이름 입력은 동일한 UUID 출력을 생성하여 결정론적 시나리오에 적합하다.
- 충돌 확률
- 무작위로 생성된 두 ID가 우연히 동일할 확률. UUID v4의 충돌 확률은 약 170억 분의 1조 분의 1로 실제 엔지니어링에서 무시할 수 있다.
- Crockford Base32
- Douglas Crockford가 설계한 Base32 인코딩으로, I/L/O/U를 제외한 대문자와 숫자를 사용하여 혼동하기 쉬운 문자를 피한다. ULID에서 사용된다.
UUID / ULID / NanoID 비교표
| 특성 | UUID v4 | ULID | NanoID |
|---|---|---|---|
| 길이 | 36자(하이픈 포함) / 32자(하이픈 없음) | 26자 | 기본 21자 |
| 문자 집합 | 16진수(0-9a-f) | Crockford Base32(32자) | URL 안전(64자) |
| 정렬성 | 비정렬(랜덤) | 시간순 정렬 | 비정렬(랜덤) |
| URL 안전 | 이스케이프 필요(하이픈+영숫자) | 대체로 안전(대문자+숫자) | 완전 URL 안전 |
| 생성 속도 | 빠름 | 빠름 | UUID보다 약 60% 빠름 |
| 충돌 확률 | 1/10^36 | 1/10^36 | 1/10^34(21자 시) |
| 대표 시나리오 | 데이터베이스 기본키, 범용 ID | 분산 시스템, 로그 추적 | 단축 URL, 프론트엔드 ID, 쿠키 |
언어별 UUID 생성 방법
| 언어 | 코드 |
|---|---|
| JavaScript | crypto.randomUUID() // 최신 브라우저/Node.js 19+ |
| Python | import uuid; uuid.uuid4() |
| Java | UUID.randomUUID() |
| Go | github.com/google/uuid; uuid.New() |
| Bash/Linux | uuidgen 또는 cat /proc/sys/kernel/random/uuid |
Authoritative References
- IETFRFC 4122 - UUID 명세
- GitHubULID 명세 (GitHub)
- OfficialNanoID 공식 사이트
- 색맹 시뮬레이터
- 색상 변환기
- .htaccess를 Nginx로 변환하는 도구
- SQL 변환기
- 쿠키 파서
- Cron 표현식 생성기
- Cron 표현식 검증기
- CSS 포맷터
- CSS 압축
- CSV를 Excel로 변환
- 통화 변환기
- 텍스트 비교 도구
- 파비콘 생성기
- XML 포맷터
- 16진수 변환기
- HTML 포맷터
- HTML 압축
- HTML을 Markdown으로 변환
- Markdown을 HTML로 변환
- JavaScript 포맷터
- JS 압축
- JSX 포맷터
- JSX 압축
- 키워드 클러스터링
- Lorem Ipsum 생성기
- Markdown 테이블 생성기
- Meta Tag 생성기
- 비밀번호 생성기
- 비밀번호 강도 검사기
- QR 코드 & 바코드 생성기
- 정규식 테스터
- Slug 생성기
- SQL 생성기
- SQL 포맷터
- 글자수 세기
- 시간 도구
- TS 포맷터
- TS 압축
- TSX 포맷터
- TSX 압축
- Unix 타임스탬프 변환
- UUID 생성기
- YAML 포맷터
- 대소문자 변환기