ULID Generator

Generate random, lexicographically sortable ULIDs — a modern alternative to UUIDs that sort by creation time. Batch generate and decode existing ULIDs, entirely in your browser.

runs locally on your browser. Your data never leaves your device.

Quantity

Case

Configure your options and click Generate

Up to 1000 sortable ULIDs at once

Decode a ULID

Common Use Cases

Generate a batch of time-sortable primary keys for a new database table or seed script
Decode a ULID pulled from a log line or database row to see exactly when it was created
Generate backdated ULIDs for a specific timestamp when backfilling historical test data
Replace a UUID-based ID scheme with a sortable alternative that still fits in the same 26-character/128-bit shape

About ULID Generator

A ULID (Universally Unique Lexicographically Sortable Identifier) is a 26-character identifier designed to fix a common annoyance with UUIDs: a standard UUID is unique, but its characters are effectively random from end to end, so a list of UUIDs sorts in a meaningless order and gives no hint about when each one was created. A ULID encodes a 48-bit millisecond timestamp into its first 10 characters and 80 bits of randomness into its last 16, using Crockford's Base32 alphabet (no I, L, O, or U, to avoid misreading characters by eye). The result is a string that's just as collision-resistant as a UUID, but sorts — as plain text — in the same order the IDs were created, which makes ULIDs a popular primary-key choice for databases, event logs, and distributed systems where insertion order matters.

This tool generates one or many ULIDs at once, entirely with your browser's cryptographically secure random number generator. Batches use monotonic ordering by default — the ULID specification's own recommendation for generating multiple IDs within the same millisecond — meaning if two IDs in a batch would otherwise land on the exact same timestamp, the random portion increments instead of being redrawn, so every ID in a batch you generate is guaranteed to sort strictly after the one before it, never tied or out of order.

Already have a ULID and want to know when it was created? Paste it into the decoder and its embedded timestamp is extracted and shown as both a readable date and raw milliseconds — handy for debugging a database row or log entry without writing any code. The decoder is lenient about the common Crockford Base32 substitutions (a typed "O" is read as zero, "I" and "L" are read as one).

Everything — generation and decoding — runs as plain JavaScript directly in your browser. No identifier you generate or decode is ever uploaded, logged, or transmitted anywhere.

Frequently Asked Questions