About ULID Generator
ULID Generator produces sortable, URL-safe identifiers in the ULID format, a modern alternative to UUIDs that puts a timestamp first so that ids can be ordered by the time they were created. Choose how many to generate and the tool returns one twenty-six character ULID per line.
Each ULID is made of two halves. The first ten characters encode the epoch milliseconds in uppercase base36, zero-padded, so that the string sorts chronologically. The last sixteen characters are drawn at random from Crockford base32 - the digits and letters with I, L, O and U removed, which keeps the ids readable and unambiguous when spoken or transcribed.
The practical effect is that ULIDs generated in the same run share their timestamp prefix and line up in order, which is exactly why they are useful as primary keys in logs and databases. The timestamp is only millisecond precision, so two ids created in the same millisecond are ordered only by their random half, and there is no guarantee of uniqueness across separate machines.
How to use ULID Generator
- 1 Set the Count field to how many ULIDs you want, or leave the default of one.
- 2 Run the tool to read one ULID per line.
- 3 Note that ids from one run share a timestamp prefix and sort chronologically.
Frequently asked questions
How is a ULID structured?
The first ten characters are the epoch milliseconds in uppercase base36, zero-padded, and the last sixteen are random from Crockford base32. The timestamp leading means the string sorts in creation order.
Why does the alphabet skip I, L, O and U?
Those letters are easy to confuse with digits and each other, so Crockford base32 leaves them out. The result is an id that is safer to read aloud or write down by hand.
Are two ULIDs ever identical?
Within a single run the random half makes collisions effectively impossible, but there is no global uniqueness guarantee. Two ids generated in the same millisecond are ordered only by their random half, and separate machines have no coordination.
Can I add a prefix or a namespace?
No. The generator produces plain ULIDs with nothing to configure beyond the count. For a custom prefix you would prepend it yourself after generation.
Free, online, and private
Free to use
ULID Generator is completely free. There is no account to create, no login, and no hidden charge or usage limit.
Runs online in your browser
It is a free online tool that runs entirely in your browser. Nothing to download or install — open the page and start using it right away.
Your data stays private
All processing happens locally on your device. Your input is never uploaded, stored, or tracked, so it never leaves your browser.
How ULID Generator behaves in detail
These are the specifics of this implementation — the exact ranges, defaults and fixed settings you are working with.
| Parameter | Value |
|---|---|
| Input | a Count field starting at one, with a form range of one to one hundred |
| Output | one ULID per line, each twenty-six characters long |
| Structure | the first ten characters are the epoch milliseconds in uppercase base36, zero-padded, and the last sixteen are random |
| Alphabet | the random half uses Crockford base32 - the digits and letters with I, L, O and U removed to avoid confusion |
| Sortability | because the timestamp leads, two ULIDs from one run share the same prefix and sort in chronological order |
| Count clamp | the requested count is clamped to the window from one to one hundred |
Compiled from the implementation of this tool and checked against it by itoolnet.
What ULID Generator does not do
Knowing the edges of a tool saves more time than another list of its features. These are the cases where it will not do what you might expect.
- The timestamp is taken from the clock at millisecond precision, so two ULIDs generated in the same millisecond are distinguished only by their random half. That makes ordering within a burst arbitrary, and there is no guarantee of uniqueness across separate machines or processes.
- The random half is eighty bits from the cryptographically secure generator, mapped through a modulo over a thirty-two-symbol alphabet - uniform because two hundred and fifty-six divides evenly by thirty-two, but still only one hundred and twenty-eight bits of entropy overall.
- There is nothing to configure beyond the count. No prefix or namespace, no uppercase or lowercase option, no seeded or deterministic mode, and no copy of a single ULID separate from the rest of the lines.
Tested and documented by itoolnet, the team that builds and maintains this site.