ULID Generator
Generate sortable ULIDs in bulk, decode their timestamps and convert between ULID and UUID formats.
This guide is not yet available in your language and is shown in English.
Tool guide
What this tool does
ULID Generator creates Universally Unique Lexicographically Sortable Identifiers: 26-character Crockford Base32 strings that sort by creation time. Generate monotonic batches, seed them with a custom date, and paste existing ULIDs to read their timestamp or convert them to and from UUIDs.
Random identifiers are easy to generate but awkward to work with: they cannot be sorted by age, they fragment database indexes and they are long when written out. A ULID fixes this by packing 128 bits into 26 characters, with the first 10 characters encoding a 48-bit millisecond timestamp and the last 16 carrying 80 bits of randomness. Sorting ULIDs as plain strings therefore sorts them by creation time.
This tool follows the ULID specification and uses the Crockford Base32 alphabet, which leaves out I, L, O and U to avoid misreading. In monotonic mode, IDs created within the same millisecond increment the random part by one, so a batch of 10,000 is strictly increasing. The decoder reads the timestamp back out and converts between ULID and the equivalent 128-bit UUID string. Generation uses the browser’s cryptographic random source and nothing is sent to a server.
How to use ULID Generator
- Enter How many ULIDs you need (1 to 10,000).
- Keep Monotonic switched on if the order inside the batch matters, for example when inserting rows in sequence.
- Leave Timestamp on Current time, or choose Custom date and time to back-date or future-date the IDs.
- Pick an Output format and optionally switch on Lowercase or Show UUID equivalent.
- Click Generate, then copy or download the list.
- Paste ULIDs or UUIDs into the decoder, one per line, to see the converted value and the embedded UTC time.
Tips for better results
- ULIDs and UUIDs are both 128 bits, so you can store a ULID in a native uuid column and keep its sort order.
- Decoders accept lowercase input; the canonical form is uppercase, but many teams store lowercase for readability in URLs.
- A custom timestamp is useful for reproducing an ordering bug or backfilling historic records with time-ordered keys.
- Every character position carries 5 bits, so a ULID is 10 characters shorter than a hyphenated UUID.
Common use cases
- Primary keys for event logs, orders and messages that are usually queried newest first.
- Object keys in storage buckets, where lexicographic listing returns items in time order.
- Distributed job IDs that need no coordination between workers.
- Debugging when a record was created by decoding the time from its ULID.
Common mistakes to avoid
- Assuming ULIDs from different machines are strictly ordered within one millisecond; monotonicity only holds inside a single generator.
- Exposing ULIDs in public URLs when the creation time should stay private; the timestamp is readable by anyone.
- Validating with a UUID regex. A ULID is 26 Crockford Base32 characters and the first character can be at most 7.
Frequently asked questions
How is a ULID different from a UUID v7?
Both start with a 48-bit millisecond timestamp and are 128 bits long. A ULID is written as 26 Base32 characters with no version bits, while UUID v7 uses the familiar 36-character hex format and reserves 6 bits for version and variant.
What does monotonic mode do?
When several IDs are created in the same millisecond, the generator adds one to the 80-bit random part of the previous ID instead of drawing new random bits. That keeps the batch strictly increasing.
What is the latest date a ULID can encode?
The 48-bit timestamp can hold 281,474,976,710,655 milliseconds after 1 January 1970, which is in the year 10889, so overflow is not a concern.
Can I convert a ULID back to a UUID?
Yes. Paste it into the decoder: the 128 bits are re-encoded as a standard hyphenated UUID string. Converting a UUID to a ULID works the same way, although only time-based UUIDs give a meaningful timestamp.
Feedback & suggestions
Help us improve ULID Generator. We read every message.