식별자

ULID 생성기· 시간 디코딩

새 ID를 만들거나 기존 값을 한 줄씩 검사하세요. 생성은 직접 실행하고 디코딩은 자동으로 갱신할 수 있습니다.

ULID 생성기

입력

비우면 실행 시 현재 밀리초를 한 번 읽어 묶음 전체에 사용합니다. 지정할 때는 0~281474976710655의 정수를 입력하세요. 초나 ISO 날짜를 자동 판별하지 않습니다.

이 브라우저에서 처리하며 입력을 서버로 보내지 않습니다.

결과

설정

켜면 첫 80비트 꼬리를 무작위로 정하고 이후 1씩 증가시킵니다. 끄면 각 꼬리가 독립적인 무작위 값입니다. 다음 클릭으로 만든 묶음과의 순서는 보장하지 않습니다.

생성 1~1,000개. 디코딩은 물리적 1,000줄과 UTF-16 코드 단위 100,000개까지 지원하며 전체 결과를 내보냅니다.

설정을 선택한 뒤 실행하세요.

로그의 ID 순서가 예상과 다르다면 내장 시간과 무작위 부분을 따로 확인해야 합니다. ULID 생성기는 서로 다른 밀리초의 값인지, 같은 밀리초 안에서 꼬리 부분만 다른 값인지 구별하는 데 도움이 됩니다.

테스트 시각을 지정하면 시간 접두부는 같아지지만 무작위 값까지 고정되지는 않습니다. 기존 목록을 정렬할 때도 입력 줄은 그대로 두고 결과의 원본 행 번호로 변경된 위치를 추적할 수 있습니다.

ULID 생성기로 확인할 수 있는 차이

단위를 숨기지 않는 시간 표시

ULID 생성기는 앞 10자의 시간 부분과 뒤 16자의 무작위 부분을 분리합니다. 정수 밀리초와 UTC 시각을 함께 보므로 초 단위 값을 잘못 넣었는지 날짜만 보고 추측할 필요가 없습니다.

하나의 식별자가 시계에 연결된 접두부와 불투명한 무작위 꼬리로 나뉘어 있다.

정렬한 뒤에도 원본 줄 추적

결과의 sourceLine은 입력에서의 위치를 유지합니다. 같은 값이 여러 번 나와도 삭제하지 않으며, 결과가 이동한 이유를 원본과 대조할 수 있습니다.

섞인 식별자 목록이 정렬된 목록과 선으로 연결되어 원래 위치를 보여 준다.

시각과 보장 범위를 먼저 정하세요

01

고정 밀리초로 비교하기

생성 모드의 예제는 시각만 채우며 ID를 바로 만들지 않습니다. 빈칸만 현재 시각을 뜻하고, 1700000000도 그대로 밀리초로 해석합니다.

  • 한 묶음의 시각은 수량과 관계없이 한 번만 읽습니다.
02

단조성 설정 선택하기

켜면 이 묶음의 꼬리가 연속해서 증가합니다. 끄면 같은 밀리초에도 무작위 꼬리 때문에 생성 순서와 사전식 순서가 다를 수 있습니다.

  • 다음 생성 작업은 새 난수에서 시작합니다.
03

입력을 유지한 채 순서 비교하기

디코딩 예제는 일부러 섞인 값입니다. ASCII 오름차순을 선택해 sourceLine을 확인하세요. 자동 디코딩은 350ms 대기하며 끄면 버튼 또는 Ctrl/Cmd+Enter로 실행합니다.

  • 수정 즉시 내보내기가 잠깁니다. 예제와 지우기는 미리보기 후 적용하며 한 번 되돌릴 수 있습니다.

시간을 읽을 수 있는 정렬 가능 ID

같은 조건의 일괄 생성

대문자 ID를 1~1,000개 생성합니다. 고정 시간은 접두부만 정하며, 첫 꼬리는 안전한 난수입니다. 단조 모드에 따라 나머지 꼬리를 증가시키거나 새로 뽑습니다.

ULID 디코딩과 필드 확인

타임스탬프의 Unix 밀리초, UTC ISO 시간, 두 문자 구간과 꼬리의 16진수 표현을 확인합니다. 무작위 부분에서 사용자나 장치 정보를 복구하지 않습니다.

오류가 있으면 묶음 전체 실패

길이, 문자, 범위 오류를 원래 행과 열에 표시합니다. 올바른 줄만 조용히 추려 내보내지 않으므로 일부 입력이 빠진 결과를 성공으로 오해하지 않습니다.

미리보기와 전체 내보내기 분리

화면은 50개부터 시작해 100개씩 더 표시합니다. 생성 TXT와 JSON, 디코딩 JSON에는 펼치지 않은 항목도 모두 포함되며 JSON은 시간과 필드 정보를 유지합니다.

형식과 순서 보장의 한계

대소문자만 정규화
26자의 ASCII Crockford Base32만 허용합니다. I/L을 1로, O를 0으로 바꾸지 않습니다. 빈 줄, 공백, 따옴표, 하이픈은 오류이며 중복은 그대로 둡니다.
48비트 밀리초 범위
시간 범위는 0~281474976710655이며 첫 문자는 0~7입니다. 먼 미래의 값도 형식상 유효할 수 있습니다. 생성자가 시각을 지정할 수 있으므로 실제 저장 시간의 증거는 아닙니다.
단조 증가는 한 번의 생성에만 적용
꼬리가 80비트를 넘으면 전체 실패 처리합니다. 시간을 바꾸거나 난수를 다시 뽑아 숨기지 않습니다. 클릭, 탭, 장치 사이의 상태나 시계는 공유하지 않습니다.
비밀 정보나 UUID로 해석하지 않기
둘 다 128비트를 쓸 수 있지만 문자와 필드 구성은 다릅니다. UUID 변환이나 레코드 존재 확인은 제공하지 않습니다. 시간과 인접한 단조 값이 드러나므로 암호나 접근 토큰에 적합하지 않습니다.
입력과 출력 범위 제한
생성은 1,000개, 디코딩은 물리적 1,000줄 또는 UTF-16 코드 단위 100,000개까지입니다. 파일·URL 가져오기, SQL 포장, 중복 삭제, 정렬 결과의 입력 덮어쓰기는 하지 않습니다.

ULID 생성기 관련 질문

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

단조 모드가 켜진 하나의 성공한 묶음에서는 그렇습니다. 각 클릭은 새로운 무작위 시작값을 사용하므로 묶음 사이의 순서는 보장하지 않습니다. 모드를 끄면 같은 밀리초에서도 생성 순서와 정렬 순서가 달라질 수 있습니다.

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

같은 밀리초의 독립 난수에는 2^80개의 가능한 꼬리가 있고 충돌 확률은 0이 아닙니다. ULID 생성기는 단조 모드의 한 묶음 안에서 서로 다른 꼬리를 만들지만, 외부 생성기까지 포함한 유일성을 보장하지 않습니다.

ULID에서 생성 시간을 추출할 수 있나요?

앞 10자에서 Unix 밀리초를 복원할 수 있습니다. 다만 생성 시 임의의 시간을 넣거나 시계가 어긋날 수 있으므로 내장 시각만 알 수 있으며 실제 사건 발생 시각을 검증한 것은 아닙니다.

ULID는 어떤 문자 집합을 사용하나요?

숫자와 영문자로 구성된 Crockford Base32이며 I, L, O, U를 제외합니다. 소문자 입력은 허용하고 대문자로 통일합니다. 모호한 글자를 숫자로 추측해서 바꾸지는 않습니다.

ULID는 UUID v7과 어떻게 비교되나요?

둘 다 밀리초 기반 시간을 담을 수 있습니다. UUID v7은 UUID 형식과 기존 UUID 생태계에 맞고 ULID는 26자 Base32 표현을 사용합니다. 저장소가 요구하는 타입과 라이브러리 호환성을 기준으로 선택하세요.

ID에 대해 궁금한 점이 있나요?

ULID 생성기 시작하기

ULID 생성기에서 고정 시각의 작은 묶음을 만든 다음, 섞인 예제를 디코딩하여 타임스탬프와 원본 줄의 대응을 확인하세요.