ULID Generator & Decoder
Generate ULIDs — compact, URL-safe, lexicographically sortable IDs — and decode their timestamp. Runs entirely in your browser.
How to use ULID Generator
- 1Choose how many
Set how many ULIDs to generate (1–100).
- 2Generate
Click Generate. The random portion is created locally with your browser crypto API.
- 3Copy
Copy a single ULID or use Copy all for the batch.
- 4Decode (optional)
Paste a ULID into the decoder to read the timestamp in its first 10 characters.
About ULID Generator
A ULID (Universally Unique Lexicographically Sortable Identifier) is a 128-bit ID designed to be globally unique and sortable by creation time, while staying more compact and URL-friendly than a UUID. It is written as 26 characters in Crockford Base32 — for example 01ARZ3NDEKTSV4RRFFQ69G5FAV — which is shorter than a UUID 36-character hyphenated form and contains no special characters, so it drops cleanly into URLs, filenames, and database keys.
The structure has two parts: the first 10 characters encode a 48-bit Unix millisecond timestamp, and the remaining 16 characters carry 80 bits of randomness. Because the timestamp comes first and Base32 preserves order, ULIDs sort lexicographically into creation order — sort them as plain strings and you get oldest to newest. That gives the same index-friendly, time-ordered behavior as UUID v7 while staying human-readable and case-insensitive.
Crockford Base32 deliberately omits the letters I, L, O, and U to avoid confusion with digits and to sidestep accidental words, and it treats input case-insensitively, which makes ULIDs easy to read aloud, type, and copy. This tool generates ULIDs entirely in your browser using crypto.getRandomValues for the random component, and the decoder reads the embedded timestamp back out of any ULID you paste, so you can tell when an ID was created without a separate column.
ULIDs are a strong choice when you want sortable, decentralized IDs with a friendlier text form than a UUID: public-facing resource identifiers, log and event IDs, or distributed primary keys all fit well. The main alternative is UUID v7, which offers the same time-ordering inside the standard UUID format — pick ULID when compactness and readability matter, and v7 when you need to stay within UUID-typed columns. Nothing you generate or decode is ever sent to a server.
When to use ULID Generator
- Sortable database keys
Time-ordered keys keep index inserts sequential while remaining globally unique.
- Public resource IDs
Shorter and hyphen-free, ULIDs slot into URLs and filenames without escaping.
- Log and event ordering
Sort records by ULID as plain strings to get them in creation order.
- Timestamp recovery
Decode a ULID to read its creation time without a separate timestamp field.
Frequently asked questions
What is the difference between a ULID and a UUID?+
Both are 128-bit unique IDs, but a ULID is 26 Crockford Base32 characters and is time-sortable by design, while a UUID v4 is 36 characters and fully random. ULIDs are shorter, URL-safe, and sort into creation order.
Are ULIDs sortable?+
Yes. The leading 48-bit timestamp means sorting ULIDs as strings orders them by creation time, which keeps database index inserts sequential.
What characters can appear in a ULID?+
Crockford Base32: digits 0–9 and uppercase letters excluding I, L, O, and U. This avoids ambiguous characters and keeps ULIDs URL- and filename-safe.
Can I recover the creation time from a ULID?+
Yes. The first 10 characters encode a Unix millisecond timestamp; paste a ULID into the decoder above to read it.
Is generation secure and private?+
The random portion uses your browser cryptographically secure generator, and everything runs locally — no ULID is sent to any server.
Related tools
Generate time-ordered UUID v7 identifiers and decode their embedded timestamp. Free, fast, runs entirely in your browser.
Generate compact, URL-safe Nano IDs with a custom length. Cryptographically secure, runs entirely in your browser.
Generate cryptographically random UUID v4 identifiers — single or bulk, instantly.
From the blog
A JWS (signed JWT) has 3 parts; a JWE (encrypted JWT) has 5. Learn what each JOSE acronym means, when a token is signed vs encrypted, and which you need.
RFC 7519 defines 7 registered JWT claims: iss, sub, aud, exp, nbf, iat, jti. Learn what each means, how to validate it, and the checks that stop attacks.