About This Tool
Generate ULIDs and NanoIDs in batches. A ULID is always 26 characters; a NanoID takes whatever length and alphabet you choose. Each run also reports the ID length, the alphabet size, the random bits, the size of the keyspace, and how many IDs it takes before a collision becomes a coin flip.
A ULID spends its 128 bits as a 48-bit timestamp plus 80 random bits, written in Crockford base32 as 26 characters: the first 10 carry the millisecond timestamp and the last 16 the randomness. Because that alphabet is in ASCII order, sorting the strings sorts by time, although the order of IDs made within the same millisecond is not guaranteed by the specification. A NanoID at the default length of 21 over a 64-character alphabet carries 126 bits, close to the 122 bits of a version 4 UUID. Follows both specifications as of October 2026.
Every random value comes from crypto.getRandomValues, never Math.random. When the alphabet size is not a power of two, draws that fall out of range are discarded so no character comes up more often than another. The collision figure is a birthday-problem approximation rather than a guarantee, and generated IDs exist only in your browser and are not stored anywhere. Do not use them in place of a security token or a password.
Frequently Asked Questions
The first 10 characters hold a millisecond timestamp and the Crockford base32 alphabet ascends in ASCII order, so sorting the strings as text puts them in creation order. The relative order of IDs created in the same millisecond is not guaranteed by the spec.
The random bits equal the base-2 logarithm of the alphabet size times the length. Over the default 64-character alphabet, 21 characters give 126 bits, but 10 characters give 60 bits, which drops the 50% collision point to the order of billions. The result prints that figure so you can compare it with your expected volume.
It does not decode or split an existing ID, and it does not generate UUIDs. It also does not recommend these IDs as security tokens. It only generates them and sizes the keyspace.