Skip to content
Zoyku

ULID Generator

Generate ULIDs — sortable 26-character unique identifiers with an embedded millisecond timestamp — and decode any ULID back to its creation time.

ULIDsTimestamp (ms)

Generated locally with crypto.getRandomValues — 48-bit timestamp + 80-bit randomness, Crockford Base32, 26 characters.

This tool runs entirely in your browser. Your data never leaves your device — it is not uploaded to any server.

How to use

  1. 1Click Generate to create a batch of ULIDs (or paste one to decode it).
  2. 2Each ULID shows its embedded timestamp — the time it was created, in ISO format.
  3. 3Copy individual ULIDs or the whole list for your fixtures, database seeds or log analysis.

ULID Generator

UUIDv4 is random, so database rows carrying it sort into chaos: indexes fragment, time-ordered queries need a separate column. ULID (Universally Unique Lexicographically Sortable Identifier) fixes that by putting a 48-bit millisecond timestamp first, followed by 80 bits of randomness — 26 characters in Crockford Base32 that sort correctly as plain strings.

The Crockford alphabet (0-9 and A-Z minus I, L, O, U) avoids characters that are routinely misread in handwriting and transcription: no I/1 confusion, no O/0. Generated here with crypto.getRandomValues for the random half and the clock for the timestamp half, both per the ULID spec.

Beyond generating, paste any existing ULID to decode it: the embedded timestamp is extracted and shown as an ISO date, which turns every ULID in your logs into a creation-time record for free. Batch mode generates up to 50 at once, all sharing the same generation moment.

Frequently asked questions

Why choose ULID over UUIDv4?

Sorting. A ULID's first 10 characters encode the creation timestamp, so lexicographic order equals chronological order — primary keys cluster in indexes, range scans on time work directly, and logs sort naturally. UUIDv4 has none of these properties; ULID keeps 128-bit collision resistance anyway.

What is Crockford Base32 and why not hex or base64?

Crockford Base32 uses 32 characters (digits plus A-Z without I, L, O, U) chosen to survive human transcription: no letter/number look-alikes, and it's case-insensitive. Compared with hex it's 25% denser; compared with base64 it avoids +, / and =, so it's URL-, filename- and XML-safe without escaping.

Can two ULIDs generated in the same millisecond collide?

They can't in practice: the 80 random bits give ~1.2 × 10²⁴ possibilities per millisecond. The ULID spec also defines monotonic generation (increment the random part within the same millisecond), which this generator's batch mode respects by construction — each batch entry is distinct.

Is the output safe to paste into production code?

Yes. Formatting, escaping and conversion follow the relevant specs (RFCs, W3C, JSON Schema), and nothing is sent anywhere — you can verify the output locally before committing it.

Does it work on large inputs?

Yes — everything runs locally. A multi-megabyte JSON file or a long regex session is limited only by your machine, not by a request size cap.

Is this tool free to use?

Yes, completely free — no signup, no subscription, no daily limits, and no watermarks on the output.

Embed this tool

Put this tool on your own site with one line — it runs entirely in the visitor's browser.

<iframe src="https://zoyku.com/en/tools/ulid-generator?embed=1" width="100%" height="640" style="border:0;border-radius:16px" title="Zoyku — ulid-generator" loading="lazy"></iframe>
100% local processing