ULID 디코더 (타임스탬프 & 랜덤성)
개발
ULID는 26자의 사전순 정렬 가능한 식별자입니다: 앞 10자는 48비트 밀리초 타임스탬프, 뒤 16자는 80비트 랜덤성이며 모두 Crockford Base32입니다. 시간이 상위 비트에 있어 ULID는 생성 순서대로 정렬됩니다 — 사람들이 무작위 UUID 대신 ULID를 쓰는 이유가 바로 이것입니다. 이 디코더는 ULID를 다시 분리합니다: 타임스탬프를 읽어 ISO UTC, 상대 표시 "x 전", 원시 에폭 밀리초로 보여 주고, 랜덤 부분을 Crockford Base32와 hex 두 가지로 표시합니다. 디코딩은 대소문자를 가리지 않고 고전적인 Crockford 혼동 문자를 관대하게 처리합니다 — I와 L은 1로, O는 0으로 읽습니다 — 또한 길이·알파벳·타임스탬프가 48비트를 넘지 않는지(첫 글자는 0–7) 검증합니다. 모든 처리는 로컬에서 실행되며 업로드되지 않습니다.
앞 10자 = 48비트 ms 타임스탬프, 뒤 16자 = 80비트 랜덤성. Crockford Base32: I/L→1, O→0, 대소문자 무관.
사용법
- ULID 붙여넣기(26자, 예: 01ARZ3NDEKTSV4RRFFQ69G5FAV).
- 생성 타임스탬프(UTC·상대·에폭 ms)를 읽으세요.
- 타임스탬프나 랜덤성을 Crockford 또는 hex로 필요에 따라 복사하세요.
자주 묻는 질문
- ULID는 시간을 어떻게 인코딩하나요?
- 앞 10자의 Crockford Base32가 Unix 에폭(1970-01-01) 이후 밀리초의 48비트 카운트를 담습니다. 48비트는 서기 10889년까지 커버하므로 첫 글자는 0–7만 가능하며, 그보다 크면 오버플로로 무효 처리됩니다. 나머지 16자는 80비트 랜덤성입니다.
- 왜 디코딩이 대소문자를 가리지 않나요?
- ULID는 사람 친화적으로 설계된 Crockford Base32를 씁니다: 대소문자를 구분하지 않고 시각적으로 헷갈리는 I·L을 1로, O를 0으로 취급합니다. 이 도구는 디코딩 전에 이를 정규화하므로, 소문자로 입력하거나 0 대신 O를 써도 올바르게 디코딩됩니다.
- ULID는 UUID와 어떻게 다른가요?
- 둘 다 128비트 ID지만, ULID는 타임스탬프가 상위 비트에 있는 26자의 정렬 가능한 Base32로 인코딩되어 ULID 목록은 이미 생성 순서입니다. 무작위 UUID(v4)는 시간을 담지 않아 의미 있게 정렬되지 않습니다. UUID v7이 같은 요구에 대한 표준 답이며, 그건 UUID 인스펙터를 쓰세요.
- 타임스탬프는 정확한가요?
- 네 — 밀리초 타임스탬프가 ULID에 직접 저장되므로 생성기의 시계가 정확했다면 생성 시각은 밀리초 단위로 정확합니다. 상대 시간은 사용자 기기의 현재 시계를 기준으로 계산됩니다.
관련 도구
Base64 ↔ 16진수 변환기
Base64 문자열을 16진수 바이트로, 16진수를 다시 Base64로 변환합니다. URL-safe 지원, 브라우저에서 동작합니다.
Quoted-Printable 인코더 & 디코더
텍스트를 MIME Quoted-Printable(RFC 2045)로 인코딩하거나 다시 디코딩 — =XX 이스케이프·소프트 줄바꿈·UTF-8 처리, 인코딩 시 76자 줄바꿈 — 브라우저에서.
해시 생성기 (SHA)
텍스트로 SHA-1·SHA-256·SHA-384·SHA-512 해시를 생성하세요.
URL 인코더 / 디코더
URL용으로 텍스트를 퍼센트 인코딩하거나, 인코딩된 URL을 디코딩하세요.
Base64 인코더 / 디코더
텍스트를 Base64로 인코딩하거나 다시 텍스트로 디코딩하세요.
JSON 포맷터 & 검증기
브라우저에서 바로 JSON을 포맷·정렬·압축·검증하세요.