ULID Generator
Your ULID
The first 10 characters encode the current Unix time in milliseconds. Same-millisecond results increase within this page session.
Advertisement
Generate a ULID batch
Enter a whole number from 1 to 10,000.
ULIDs are case-insensitive, but canonical strings are uppercase. CSV and JSON are escaped correctly.
Press Ctrl/Cmd + Enter to regenerate. The output stays in a fixed scrollable area to avoid layout shifts.
Validate and decode a ULID
Paste a 26-character ULID. The decoder checks the Crockford Base32 alphabet and 128-bit overflow limit, then extracts its timestamp and random components.
Lowercase is accepted. The letters I, L, O, and U are not part of the ULID alphabet.
How to generate ULIDs
- Use the ready-made ULID above, or choose a batch quantity from 1 to 10,000.
- Select canonical uppercase or lowercase and choose TXT, CSV, or JSON output.
- Select Generate Batch, then copy the results or download the selected format.
How ULIDs work
A ULID is a 128-bit value written as 26 characters using Crockford Base32. The ULID specification divides it into a 48-bit unsigned Unix timestamp in milliseconds and an 80-bit random component.
The encoding alphabet is 0123456789ABCDEFGHJKMNPQRSTVWXYZ. It omits I, L, O, and U, contains no punctuation, and is safe to use in ordinary URLs. The first character of a valid ULID can only be 0 through 7; higher values would overflow the 128-bit limit.
Monotonic ordering used here
At the start of each new millisecond, this tool seeds the 80-bit component with crypto.getRandomValues(). Further ULIDs in the same millisecond increment that component by one, with carrying. If the local clock moves backward while the page remains open, the generator retains its last timestamp and continues the sequence so results do not move backward.
The sequence is strictly increasing only inside this page session. Other tabs, devices, and services have independent state. In the extraordinarily unlikely event that the 80-bit field reaches its maximum within one millisecond, generation stops as required by the specification instead of wrapping and repeating a value.
Specification reviewed: .
ULID compared with UUID v7 and UUID v4
| Feature | ULID | UUID v7 | UUID v4 |
|---|---|---|---|
| Text format | 26 Base32 characters | 36 hexadecimal characters with hyphens | 36 hexadecimal characters with hyphens |
| Time component | 48-bit Unix milliseconds | 48-bit Unix milliseconds | None |
| Random component | 80 bits | Up to 74 available bits | 122 bits |
| Canonical string order | Chronological | Chronological | Random |
| Standard | Community specification | RFC 9562 | RFC 9562 |
| Exposes creation time | Yes | Yes | No |
Choose the format supported by your database, language, and surrounding systems. For production use, select a maintained implementation, document its monotonic behavior, and enforce a unique constraint where duplicate identifiers would matter.
ULID FAQ
What is a ULID?
ULID stands for Universally Unique Lexicographically Sortable Identifier. It is a 128-bit identifier encoded as 26 Crockford Base32 characters, with a 48-bit Unix millisecond timestamp followed by 80 random bits.
Are ULIDs guaranteed to be unique?
No distributed random identifier provides an absolute uniqueness guarantee. An 80-bit random field makes accidental collisions very unlikely, and this tool prevents repeats within its current monotonic sequence, but production databases should still enforce a unique constraint.
Do ULIDs always sort by creation time?
Canonical ULID strings sort by their millisecond timestamp when compared lexicographically. This tool also increments the random field for same-millisecond values, so generated results remain strictly increasing within the current page session.
Does a ULID reveal when it was created?
Yes. The first 10 characters encode a Unix timestamp in milliseconds, so the approximate creation time is recoverable from a ULID.
What characters can a ULID contain?
Canonical ULIDs use the Crockford Base32 alphabet 0123456789ABCDEFGHJKMNPQRSTVWXYZ. The letters I, L, O, and U are excluded, and lowercase is equivalent when parsing.
What is a monotonic ULID?
When more than one ULID is created in the same millisecond, a monotonic generator increments the 80-bit random component so the strings remain ordered. This page keeps that sequence only until it is closed or reloaded.
Is this ULID generator private?
Yes. Generation, validation, copying, and file creation happen locally in your browser. Generated and pasted ULIDs are not sent to the website.
Can I use a ULID as an API key or secret?
No. A ULID is an identifier, not an authentication secret, and it exposes its timestamp. Use a purpose-built secret-token generator and appropriate credential storage instead.
