Generators / LOCAL TOOL

ULID Generator & Inspector

Generate cryptographically random ULIDs and inspect their timestamp and random components locally.

Runs locally — input is never uploaded
Generate or inspectLeave the ULID empty to generate
Ready when you are

WHAT IT DOES

Generate sortable identifiers and see what they contain.

Generate one or a batch of ULIDs with the browser's cryptographic random source, then inspect any 26-character ULID to read its millisecond timestamp, UTC/local date, canonical form, and random component. The encoder uses the ULID Crockford Base32 alphabet and never falls back to Math.random.

Why use it?

Use timestamp-bearing identifiers when their sortable textual form is useful, or inspect an existing ULID to read the time encoded in it.

How to use this tool

  1. Choose a quantity and generate ULIDs, or enter an existing 26-character ULID in the inspector.
  2. Review the canonical form and decoded timestamp. Generated values change between runs; an encoded timestamp is supplied data, not independent proof of when a record was created.
  3. Do not treat chronological ordering as a guaranteed creation order for multiple values within the same millisecond, or use the timestamp-bearing ID as a secret.

Details and limitations

  • Generated values contain a 48-bit millisecond timestamp followed by 80 random bits and are 26 characters long.
  • Inspection accepts lowercase input but reports the canonical uppercase representation and rejects ambiguous Crockford characters.
  • Batch generation is bounded at 100 values so a mistaken quantity cannot flood the output pane.
  • All generation and inspection is local; no identifier, timestamp, or random material is sent in a usage event.

COMMON QUESTIONS

ULID questions

Are these ULIDs cryptographically random?
The random component is filled with the browser's crypto.getRandomValues API, which is the appropriate source for unpredictable random bytes in a web page.
What does the first part of a ULID represent?
The first ten Crockford Base32 characters encode a 48-bit Unix timestamp in milliseconds. The remaining sixteen characters carry 80 random bits.
Does a ULID replace a UUID everywhere?
No. ULIDs are useful when time-sortable, URL-friendly identifiers are helpful, but database constraints, privacy requirements, and interoperability may still make UUIDs a better fit.