왜 만들었나요
UUID를 기본키로 쓰다가 데이터가 쌓이니 정렬이 뒤죽박죽이라 최근 것을 찾기가 번거로웠습니다. 만든 순서대로 늘어서는 식별자가 필요해서 ULID를 쓰기 시작했고, 뽑을 때마다 콘솔을 여는 게 귀찮아 만들었습니다.
시간순으로 정렬되는 고유 식별자(ULID)를 원하는 개수만큼 만듭니다.
로딩 중...
UUID를 기본키로 쓰다가 데이터가 쌓이니 정렬이 뒤죽박죽이라 최근 것을 찾기가 번거로웠습니다. 만든 순서대로 늘어서는 식별자가 필요해서 ULID를 쓰기 시작했고, 뽑을 때마다 콘솔을 여는 게 귀찮아 만들었습니다.
Note
만들어진 값은 서버로 전송되지 않습니다. 생성이 전부 브라우저 안에서 이뤄집니다.
개수를 정하고 다시 생성을 누르면 목록이 만들어집니다.
각 줄을 클릭하면 그 값만, 전체 복사 버튼을 누르면 목록 전체가 줄바꿈으로 구분되어 복사됩니다.
3개를 뽑으면 이렇게 나옵니다.
01JCXQZ8K2 9WYFTM3B7N5RGVD
01JCXQZ8K2 QH4PJXNC6EA2SVT ← 앞 10자리가 같음(같은 시각)
01JCXQZ8K3 M8DFR9KTZW7YBXQ ← 시간이 지나면 앞자리가 커짐
앞 10자리가 만든 시각, 뒤 16자리가 무작위입니다. 글자 순서대로 정렬하면 곧 시간순이 됩니다.
| ULID | UUID v4 | |
|---|---|---|
| 길이 | 26글자 | 36글자 (하이픈 포함) |
| 정렬 | 시간순으로 정렬됨 | 무작위라 정렬 의미 없음 |
| 하이픈 | 없음 | 있음 |
| 대소문자 | 대문자만 | 소문자 |
데이터베이스 기본키로 쓸 때 차이가 큽니다. 시간순으로 늘어서면 최근 데이터가 한곳에 모여 저장되어, 조회와 삽입이 빨라집니다.
I, L, O, U는 쓰지 않습니다. 숫자 1·0과 헷갈리기 쉬워서, 사람이 눈으로 옮겨 적을 때 실수를 줄이려고 뺀 것입니다.
시간 정보를 앞에 담은 고유 식별자입니다. UUID처럼 겹치지 않으면서도 만든 순서대로 정렬된다는 점이 다릅니다.
데이터베이스에서 각 행을 구분하는 대표 값입니다. 겹치면 안 되고 자주 조회되기 때문에, 어떤 형태를 쓰느냐가 성능에 영향을 줍니다.
가장 큰 장점은 '정렬 가능성'과 '가독성'입니다. 타임스탬프를 기반으로 생성되기 때문에 데이터베이스에 저장할 때 시간 순서대로 정렬하기 유리하여 인덱싱 효율이 좋습니다. 또한, 길이가 26자로 더 짧고, 헷갈리기 쉬운 영문자(I, L, O 등)와 특수기호(하이픈)를 제외하여 URL이나 텍스트 식별자로 사용하기 훨씬 편리합니다.
중복 확률은 사실상 0에 가깝습니다. 뒷부분의 16자리는 암호학적으로 안전한 무작위 난수로 생성되며, 이는 1밀리초라는 아주 짧은 시간 동안 약 1.21e24개의 고유한 조합을 만들어낼 수 있는 크기입니다. 따라서 어떠한 대규모 분산 환경에서도 안심하고 사용할 수 있습니다.
아니요, 전혀 남지 않습니다. utilzip의 생성 기능은 사용자가 접속한 기기의 웹 브라우저 메모리 안에서 자체적으로 연산을 수행합니다. 외부 서버와의 데이터 통신 없이 독립적으로 동작하므로, 민감한 프로젝트나 실무 환경에서도 정보 유출 걱정 없이 안전하게 활용할 수 있습니다.
마지막 업데이트: 2026년 8월