본문 바로가기

ULID 생성기

시간순으로 정렬되는 고유 식별자(ULID)를 한 번에 200개까지 만듭니다. 만든 순서가 값에 담겨 정렬만 해도 시간순이 됩니다.

로딩 중...

왜 만들었나요

UUID를 기본키로 쓰다가 데이터가 쌓이니 정렬이 뒤죽박죽이라 최근 것을 찾기가 번거로웠습니다. 만든 순서대로 늘어서는 정렬 가능 ID가 필요해서 ULID를 쓰기 시작했고, 뽑을 때마다 개발자 도구 창을 여는 게 귀찮아 ULID 생성기를 만들었습니다.

Note

만들어진 값은 서버로 전송되지 않습니다. ULID 생성기는 값을 만드는 일까지 전부 브라우저 안에서 처리합니다.


ULID 생성기 사용 방법

  1. ULID 생성기를 열면 목록이 바로 나옵니다. 개수를 바꾸면 그때마다 새로 뽑고, 같은 개수로 값만 다시 뽑고 싶을 때 다시 생성을 누릅니다.

    개수를 5로 두고 만든 ULID 목록 — 위에 개수 조절 −·+ 버튼과 다시 생성, 전체 복사 버튼이 있다

  2. 각 줄을 클릭하면 그 값만, 전체 복사 버튼을 누르면 목록 전체가 줄바꿈으로 구분되어 복사됩니다.

    같은 ULID 목록에서 전체 복사 버튼에 마우스를 올린 화면

이렇게 나옵니다

3개를 뽑으면 이렇게 나옵니다.

01JCXQZ8K2 9WYFTM3B7N5RGVDZ
01JCXQZ8K2 9WYFTM3B7N5RGVE0    ← 앞 10자리가 같음(같은 시각)
01JCXQZ8K3 M8DFR9KTZW7YBXQ4    ← 시간이 지나면 앞자리가 커짐

앞 10자리가 만든 시각, 뒤 16자리가 무작위입니다. 글자 순서대로 정렬하면 곧 시간순이 됩니다.

알아두면 좋은 것

UUID와 뭐가 다른가

ULIDUUID v4
길이26글자36글자 (하이픈 포함)
정렬시간순으로 정렬됨무작위라 정렬 의미 없음
하이픈없음있음
대소문자대문자만소문자

데이터베이스 기본키로 쓸 때 차이가 큽니다. 시간순으로 늘어서면 최근 데이터가 한곳에 모여 저장되어, 조회와 삽입이 빨라집니다.

헷갈리는 글자를 뺐습니다

I, L, O, U는 쓰지 않습니다. 숫자 1·0과 헷갈리기 쉬워서, 사람이 눈으로 옮겨 적을 때 실수를 줄이려고 뺀 것입니다.

이런 경우에는

같은 시각에 만든 값이 순서대로 나오나요

같은 밀리초 안에서 여러 개를 만들면 앞 10자리가 같습니다. 그래도 한 번에 뽑은 목록 안에서는 같은 시각이어도 만든 순서가 그대로 유지되니, 그 목록은 글자 순서대로 정렬해도 됩니다. 다만 다시 생성으로 새로 뽑은 다른 묶음끼리는 같은 밀리초일 때 순서가 보장되지 않습니다. 묶음을 넘나드는 정확한 순서가 필요하면 별도 순번을 함께 두세요.

만든 시각이 노출되나요

앞 10자리를 풀면 밀리초 단위 생성 시각을 알 수 있습니다. 대개는 문제없지만, 언제 만들어졌는지 감추어야 하는 값이라면 UUID 생성기의 v4를 쓰세요.

언제 ULID를 고르나요

상황어울리는 것
데이터베이스 기본키ULID — 시간순 정렬로 성능 유리
주문번호·로그 IDULID — 언제 생긴 건지 순서가 보임
만든 시각을 숨겨야 함UUID v4
외부에 노출되는 공개 IDUUID v4
비밀번호·인증 토큰비밀번호 생성기

정렬이 필요하면 ULID, 감춰야 하면 UUID로 기억하시면 됩니다.

URL이나 파일 이름에 넣어도 되나요

됩니다. ULID는 영문 대문자와 숫자로만 이뤄지고 하이픈이나 특수문자가 없어서, 주소·파일 이름·명령어 어디에 넣어도 따로 처리할 필요가 없습니다.

헷갈리기 쉬운 글자(I·L·O·U)도 빠져 있어, 사람이 눈으로 읽거나 전화로 불러 줄 때 잘못 옮겨 적을 일이 적습니다.

이 도구로는 안 되는 것

  • 비밀번호나 토큰으로 쓰지 마세요. 앞자리가 시간이라 추측 가능한 부분이 있습니다 — 비밀번호 생성기를 쓰세요
  • 이미 만든 값을 되돌려 원래 정보를 꺼낼 수 없습니다 — 시각 외에는 담긴 정보가 없습니다
  • 표준 형식이 필요하면 UUID 생성기를 쓰세요

용어 설명

ULID

시간 정보를 앞에 담은 고유 식별자입니다. UUID처럼 겹치지 않으면서도 만든 순서대로 정렬된다는 점이 다릅니다.

기본키

데이터베이스에서 각 행을 구분하는 대표 값입니다. 겹치면 안 되고 자주 조회되기 때문에, 어떤 형태를 쓰느냐가 성능에 영향을 줍니다.

ULID 생성기 자주 묻는 질문

ULID는 UUID 시스템과 비교했을 때 어떤 장점이 있나요?

가장 큰 장점은 '정렬 가능성'과 '가독성'입니다. 타임스탬프를 기반으로 생성되기 때문에 데이터베이스에 저장할 때 시간 순서대로 정렬하기 유리하여 인덱싱 효율이 좋습니다. 또한, 길이가 26자로 더 짧고, 헷갈리기 쉬운 영문자(I, L, O 등)와 특수기호(하이픈)를 제외하여 URL이나 텍스트 식별자로 사용하기 훨씬 편리합니다.

생성되는 값의 중복 가능성은 어느 정도인가요?

중복 확률은 사실상 0에 가깝습니다. 뒷부분의 16자리는 암호학적으로 안전한 무작위 난수로 생성되며, 이는 1밀리초라는 아주 짧은 시간 동안 약 1.21e24개의 고유한 조합을 만들어낼 수 있는 크기입니다. 따라서 어떠한 대규모 분산 환경에서도 안심하고 사용할 수 있습니다.

이 도구에서 식별자를 생성할 때 서버에 로그가 남나요?

아니요, 전혀 남지 않습니다. 유틸집의 생성 기능은 사용자가 접속한 기기의 웹 브라우저 메모리 안에서 자체적으로 연산을 수행합니다. 외부 서버와의 데이터 통신 없이 독립적으로 동작하므로, 민감한 프로젝트나 실무 환경에서도 정보 유출 걱정 없이 안전하게 활용할 수 있습니다.

ULID를 URL이나 파일 이름에 그대로 써도 되나요?

됩니다. 값이 영문 대문자와 숫자만으로 구성되고 하이픈 같은 기호가 섞이지 않아, 주소나 파일 이름에 그대로 넣어도 인코딩 같은 추가 처리가 필요 없습니다. 게다가 헷갈리기 쉬운 I·L·O·U를 뺀 문자 집합을 쓰기 때문에, 사람이 눈으로 읽거나 전화로 불러 줄 때 잘못 옮겨 적을 일도 적습니다. UUID가 하이픈 때문에 자리를 더 차지하고 소문자 알파벳까지 섞이는 것과 대비되는 부분입니다.

언제 ULID를 쓰고 언제 UUID를 써야 하나요?

정렬이 필요하면 ULID, 감춰야 하면 UUID로 기억하시면 됩니다. 데이터베이스 기본키나 주문번호·로그 ID처럼 만들어진 순서가 의미 있고 조회 성능이 중요한 곳에는 ULID가 유리합니다. 반대로 값에서 만든 시각이 드러나면 곤란한 경우나 외부에 공개되는 식별자라면 완전 무작위인 UUID v4가 낫습니다. ULID는 앞 10자리를 풀면 밀리초 단위 생성 시각을 알 수 있기 때문입니다.

마지막 업데이트: