ULID

ULID (Universally Unique Lexicographically Sortable Identifier) is an identifier that's intended to be used in a similar manner to the UUID, where unique identifiers are needed without a central authority to assign them, but unlike UUIDs, they sort properly in the order of creation, because the prefix portion identifies the timestamp (to the millisecond) that a ULID was created, and the rest of the identifier is assigned pseudorandomly, but when more than one ULID is generated in the same process in the same millisecond, successive values are used in order so that they sort properly.

String and binary representations are defined. String representations are encoded using a Base32 alphabet of, case-insensitively. String-based ULIDs are 26 characters long, with the first 10 encoding the timestamp (48-bit Unix time which will work until the year 10889) while binary ones are 16 bytes.

Sample ULID in string representation:

Links

 * Specs and implementation code at Github