Generate ULIDs online — 26-character, time-sortable identifiers in Crockford base32, made in your browser with a secure random source and lexicographic order.
Runs entirely in your browser — your data never leaves your device.
How to use ULID Generator
What it does & when you need it
A ULID is a 128-bit unique identifier that sorts by the time it was created. This
tool generates them on demand — 26 Crockford base32 characters, where the first
ten encode a millisecond timestamp and the last sixteen are random. Reach for a
ULID when you want the uniqueness of a UUID but also want your IDs to sort
chronologically: primary keys that stay index-friendly, log or event IDs you can
order at a glance, or object names that group by creation time. Everything is
generated locally in your browser.
How to use
Set Count for how many ULIDs you need in one batch (1–1000).
Press Generate (or Ctrl/Cmd + Enter). The IDs appear one per line.
Toggle Lowercase if you prefer that to the canonical uppercase, then
Copy the list, Clear it, or press Sample for a fresh batch.
Things worth knowing
Why it sorts. The 48-bit timestamp leads and is written most-significant digit
first, so comparing two ULIDs as plain strings is the same as comparing their
creation times. That property makes them pleasant database keys — new rows append
near the end of the index instead of scattering across it the way random keys do.
Crockford base32. The alphabet is the digits plus uppercase letters without
I, L, O, and U, which removes the characters people most often misread. A
ULID is therefore safe to read aloud or type, and decoding is case-insensitive.
A batch shares a timestamp. IDs generated together carry the same
ten-character time prefix and differ only in the random tail; the 80 random bits
come from your device's secure generator, so collisions are astronomically
unlikely even in a large batch.
If you need the classic hyphenated format instead, use the
UUID Generator — its v7 mode is also time-ordered — or
reach for the shorter NanoID Generator.
Examples
Five ULIDs
5 ULIDs
The default batch — five sortable identifiers sharing the current timestamp prefix.
A single ULID
1 ULID
One 26-character identifier, ready to use as a primary key or object name.
A larger batch
25 ULIDs
Twenty-five IDs at once; the shared time prefix shows how they sort together.
Frequently asked questions
What is a ULID and how does it compare to a UUID?+
A ULID is a 128-bit identifier like a UUID, but encoded as 26 Crockford base32 characters instead of 36 hex-and-hyphen ones. Its first 48 bits are a millisecond timestamp, so ULIDs sort chronologically as plain text — something a random UUID v4 cannot do. It is close in spirit to UUID v7 but shorter and case-insensitive.
Why are ULIDs lexicographically sortable?+
The 48-bit timestamp sits at the front, encoded most-significant digit first, so a newer ULID is always greater as a string than an older one. Sorting ULIDs alphabetically is the same as sorting by creation time, which keeps database inserts near the end of an index and makes time-range queries easy.
What is Crockford base32 and why these characters?+
Crockford base32 uses the digits and uppercase letters but omits I, L, O and U to avoid confusion with 1, 0 and each other, leaving 32 unambiguous symbols. That makes a ULID safe to read aloud, type by hand, or double-click, and it is case-insensitive when decoded.
Are these ULIDs random enough to be unique?+
Yes. After the timestamp, the remaining 80 bits come from crypto.getRandomValues, the browser's cryptographically secure generator. Within one millisecond that is 2^80 possibilities, so a collision is astronomically unlikely even when you mint many IDs at once.
Do the ULIDs in one batch share a timestamp?+
Yes. A batch is generated at a single instant, so every ULID in it begins with the same 10-character time prefix and differs only in the 16-character random tail. Generate again a moment later and the prefix advances, so later batches still sort after earlier ones.
Is generation private and offline?+
Completely. ULIDs are created locally in your browser and never sent to a server, and the tool keeps working with no network connection once the page has loaded.