Skip to main content

ULID Generator

Generate ULIDs — 26-character, Crockford Base32, lexicographically-sortable unique identifiers with a millisecond timestamp and 80 bits of cryptographically-random payload. Batch-generate as plain text, JSON, or YAML, entirely in your browser.

Input

Ignored when a fixed random payload is supplied below (a fixed payload yields exactly one ULID).

The instant encoded in the ULID's first 10 characters. Enter Unix milliseconds (e.g. 1469918176385) or an ISO 8601 date (e.g. 2016-07-30T23:36:16.385Z). Leave blank to use the current time.

Optional. Supply exactly 20 hex characters (10 bytes) to use a fixed payload instead of cryptographically-random bytes — useful for reproducible, verifiable output. Leave blank for secure random payloads.

Output

Generated ULIDs

One 26-character ULID per line (or array/list entry, per the chosen format).

Was this helpful?

Guides

Generate ULIDs — Universally Unique Lexicographically Sortable Identifiers. A ULID is a 26-character, Crockford Base32 string: the first 10 characters encode a millisecond timestamp, and the last 16 encode 80 bits of cryptographically-random data. Because the timestamp comes first, ULIDs sort the same way whether you compare them as strings or as the moments they were created — unlike a random UUID.

How to use it

  1. Set How many to generate (1–1000).
  2. Choose an Output Format — plain text, a JSON array, or a YAML list.
  3. Optionally set a fixed Timestamp or Fixed random payload for reproducible output.
  4. Click Generate.

Why sortable IDs

A uuid-generator v4 UUID is fully random, so a set of them sorts in no meaningful order — useful as a database primary key, but not as a way to tell which row was inserted first. A ULID's leading timestamp means ORDER BY id and ORDER BY created_at agree, which is why ULIDs are popular for event logs, queue message IDs, and any primary key you'd like to double as a rough timestamp.

Fixed timestamp and payload

Leave both blank for normal use — every ULID gets the current time and a fresh random payload. Fill in Timestamp (Unix milliseconds or an ISO 8601 date) and/or Fixed random payload (20 hex characters) to pin the output — useful for testing a parser, or verifying this tool's output byte-for-byte against another ULID implementation. Supplying a fixed payload always produces exactly one ULID, since repeating it would just repeat the same value.

How is this different from a UUID?

Both are 128-bit identifiers. A UUID v4 is fully random and canonically written as 36 characters with hyphens (8-4-4-4-12 hex digits). A ULID is 26 characters, no hyphens, Crockford Base32 instead of hex, and embeds a millisecond timestamp in its first 10 characters — so it's shorter, URL-safe without encoding, and sorts chronologically.

Is a ULID cryptographically secure?

The 80 bits of randomness come from your browser's CSPRNG (crypto.getRandomValues), the same source used for UUIDs and session tokens. The timestamp portion is not secret — treat a ULID as a sortable, likely-unique identifier, not as a secret token.

Privacy

Everything runs entirely in your browser. Nothing you enter is uploaded to a server.

ulidunique idsortable ididentifierbase32id generatorgenerator

Love the tools? Lose the ads.

One payment clears every ad from your account, for good. No subscription, no tracking.