Nano ID 생성기
URL에 안전하고 짧은 고유 ID를 브라우저에서 한 번에 대량으로 생성합니다. 문자 집합(기본・영숫자・소문자・대문자・숫자・16진수)과 길이를 자유롭게 지정할 수 있어 UUID보다 짧은 ID가 필요한 경우에 적합합니다.
ID 형식 비교
| 형식 | 길이 | 문자 집합 크기 | 생성 순서로 정렬 가능 여부 | 설명 |
|---|---|---|---|---|
| Nano ID | 기본 21자(1〜64자로 지정 가능) | 64자 | 불가능(완전 무작위) | URL에 안전한 문자로만 구성된 짧은 무작위 ID. 문자 집합과 길이를 자유롭게 변경할 수 있다. |
| UUID v4 | 36자(하이픈 4개 포함) | 16자(16진수) | 불가능(완전 무작위) | RFC 9562로 표준화된 128비트 식별자. 하이픈으로 구분된 16진수 표기가 표준 형식이다. |
| ULID | 26자 | 32자(Base32) | 가능(앞 10자가 타임스탬프) | 앞부분에 밀리초 단위 타임스탬프를 포함해 생성 순서대로 문자열로 정렬할 수 있다. |
Nano ID란
Nano ID는 URL에 안전한 문자만으로 이루어진 짧은 무작위 ID를 생성하는 방식입니다. 기본값으로는 64가지 문자(A-Za-z0-9_-)에서 21자를 조합해 만들어져, UUID보다 짧으면서도 실용상 충분한 무작위성을 확보할 수 있습니다. 이 도구에서는 문자 종류(기본·영숫자·소문자·대문자·숫자·16진수)와 길이, 생성 건수를 자유롭게 지정하여 ID를 한꺼번에 만들 수 있습니다.
생성 처리는 모두 브라우저 안에서 끝나며, Web Crypto API의 암호학적 난수를 쓰므로 toolbase.cc의 서버로는 전혀 전송되지 않습니다. 입력 양식에 비밀 정보를 다룰 필요가 없고, 생성한 ID를 그대로 복사해 URL의 슬러그나 시험 데이터, 파일 이름 등에 쓸 수 있습니다.
Nano ID 사용법
- 문자 종류를 고릅니다 기본(URL 안전 64문자)·영숫자·소문자만·대문자만·숫자만·16진수 가운데 용도에 맞는 문자 종류를 고릅니다.
- 길이를 설정합니다 생성할 ID의 글자 수를 지정합니다. 짧게 할수록 충돌 확률이 오르므로, 용도에 따른 균형을 의식합니다.
- 생성 건수를 지정합니다 한 번에 만들고 싶은 ID의 수를 입력합니다. 시험 데이터의 일괄 작성 등 여러 건이 필요한 경우 여기서 한꺼번에 지정할 수 있습니다.
- 생성 버튼을 누릅니다 「생성한다」를 누르면 지정한 조건에 맞는 ID가 브라우저 안에서 즉시 만들어져 일람으로 표시됩니다.
- 복사합니다 개별 ID는 「복사」 버튼으로, 한꺼번에 쓰고 싶다면 「모두 복사」로 일괄 복사할 수 있습니다.
더 잘 활용하기 위한 팁
- Nano ID는 Web Crypto API 기반의 암호학적으로 안전한 난수로 생성되며 브라우저 내에서 처리되므로 toolbase.cc 서버로는 전송되지 않습니다.
- 기본 64자 문자 집합(
A-Za-z0-9_-)은 기호나 공백을 포함하지 않으므로 그대로 URL 경로나 파일명으로 안전하게 사용할 수 있습니다. - 문자 집합을 "숫자만" 또는 "16진수"로 제한하면 기존 시스템의 ID 형식(예: 주문번호가 숫자만인 경우)에 맞춘 ID를 생성할 수 있습니다.
- 길이가 짧을수록 충돌 확률이 높아집니다. 발행량이 많은 시스템에서는 기본값인 21자 전후를 유지하고, 소량의 테스트 데이터라면 8〜10자 정도로도 충분할 수 있습니다.
- 생성 개수를 늘린 뒤 "모두 복사"를 사용하면 테스트용 데이터나 시드 데이터를 한 번에 만들 때 편리합니다.
Nano ID의 활용 상황
URL 슬러그 생성
단축 URL이나 공유 링크의 경로 부분에 쓰는 고유한 ID로서, 기호가 들어 있지 않은 URL 안전 문자열을 그대로 쓸 수 있습니다.
시험·더미 데이터의 투입
개발 중인 데이터베이스에 넣을 표본 레코드의 주 키나 식별자로서, 필요한 건수를 한꺼번에 생성할 수 있습니다.
세션 ID나 요청 ID의 발급
로그의 추적이나 API 요청의 식별에 쓰는 임시 ID로서, 짧고 다루기 쉬운 문자열을 마련할 수 있습니다.
충돌을 피하고 싶은 파일 이름의 부여
업로드 파일의 저장 이름에 무작위 ID를 붙여, 같은 이름의 파일로 덮어쓰기가 일어나는 것을 막고 싶을 때 활용할 수 있습니다.
간이 API 키나 참조 코드의 발급
운영용 인증 정보가 아니라, 사내 도구나 검증 환경에서 쓰는 짧은 참조 코드를 부여하는 데 손쉽게 쓸 수 있습니다.
용어집
- Nano ID
- URL에 안전한 문자 종류만으로 이루어진 짧은 무작위 ID 생성 방식입니다. 기본값으로는 21자·64가지 문자로 높은 무작위성을 확보합니다.
- UUID
- RFC로 표준화된 128비트 식별자입니다. 하이픈으로 구분된 36자의 16진수 표기가 표준 형식으로 널리 쓰입니다.
- ULID
- 앞머리에 밀리초 단위의 타임스탬프를 지닌 26자의 ID입니다. 생성 순서대로 문자열로서 정렬할 수 있다는 점이 Nano ID나 UUID와 다릅니다.
- Web Crypto API
- 브라우저가 표준으로 갖춘 암호 처리용 API입니다. 예측하기 어려운 난수를 생성할 수 있어, ID의 안전성의 근거가 되고 있습니다.
- 암호학적 난수
- 다음 값을 통계적으로 예측할 수 없도록 설계된 난수입니다. ID의 추측이나 사칭의 위험을 낮춥니다.
- 충돌 확률
- 서로 다른 생성에서 우연히 같은 ID가 만들어져 버리는 확률입니다. 글자 수·문자 종류가 많을수록 충돌 확률은 낮아집니다.
- 생일 문제
- 집단의 인원이 늘어날수록 같은 생일인 사람이 나타나기 쉬워지는 현상으로, ID의 충돌 확률을 어림할 때의 근사 계산에 쓰입니다.
자주 묻는 질문
여담 ― Nano ID가 UUID보다 짧을 수 있는 이유
Nano ID는 2017년 PostCSS 개발자인 Andrey Sitnik이 공개한 JavaScript 기반 ID 생성 라이브러리입니다. UUID보다 짧고 의존성이 없는 경량 구현(코드 용량이 불과 수백 바이트)임에도 암호학적으로 안전한 난수를 사용하는 설계로 평가받아, npm에서 주간 수천만 건의 다운로드를 기록하는 대표적인 라이브러리가 되었습니다.
ID의 길이는 사용하는 문자 집합의 크기에 따라 결정됩니다. UUID는 16진수(16종의 문자)만으로 128비트를 표현하기 때문에 36자가 필요하지만, Nano ID는 64종의 문자를 사용해 동등한 수준의 무작위성(기본 설정에서 126비트)을 불과 21자로 표현할 수 있습니다. 문자 하나당 정보량(log₂64=6비트)이 16진수(log₂16=4비트)보다 크다는 점이 짧아질 수 있는 이유입니다.
기본 설정(21자・64종 문자)이 갖는 126비트의 무작위성은 UUID v4의 122비트와 거의 동등합니다. 생일 문제의 근사식으로 계산하면 충돌 확률이 50%에 도달하기까지 필요한 생성 수는 약 1.09×10¹⁹개로, 실용상 걱정할 필요는 거의 없습니다.