API reference › @evolu/common › Type › Ulid
type Ulid = string & Brand<"Ulid">;
Defined in: packages/common/src/Type.ts:10765
ULID in its canonical uppercase text form, as defined by the ULID specification.
Ulid accepts 26 characters of Crockford's Base32 alphabet: the digits and the uppercase letters except I, L, O, and U. The characters spell 130 bits, and a ULID has 128, so the first character is at most 7. Every 128-bit value has exactly one Ulid.
The ULID specification reads ULIDs in any case. Ulid requires uppercase so that equal ULIDs are equal strings; uppercase text from other sources before validating it.
Convert a Ulid to an Id with ulidToId and back with idToUlid.
Example
import { assertEqual, assertErr, assertOk, Ulid } from "@evolu/common";
const value = "01ARZ3NDEKTSV4RRFFQ69G5FAV";
assertOk(Ulid.fromUnknown(value), value);
assertErr(Ulid.fromUnknown("81ARZ3NDEKTSV4RRFFQ69G5FAV"));
const lowercase = value.toLowerCase();
const invalid = Ulid.fromUnknown(lowercase);
assertErr(invalid);
assertEqual(invalid.error, { type: "Ulid", value: lowercase });
assertOk(Ulid.fromUnknown(lowercase.toUpperCase()), value);