ULID generator — lexicographically sortable IDs in bulk
Generate ULIDs (Universally Unique Lexicographically Sortable Identifiers) in batches of 1–1000. A ULID combines a 48-bit millisecond timestamp with 80 bits of randomness encoded as 26 characters of Crockford Base32, so unlike UUID v4 they sort naturally by creation time — ideal for log entries, event IDs, and database primary keys. Includes a monotonic option to avoid collisions inside the same millisecond, optional prefix (e.g. user_), newline / comma separators, and one-click download. Backed by crypto.getRandomValues, nothing — including timestamps — ever leaves your browser.
How to use
Choose the count, optionally configure a prefix (e.g. `user_`), separator, and the Monotonic option, then press Generate to list the ULIDs. Copy individual entries, or use Copy all / Download to grab the whole batch. Because ULIDs sort lexicographically by creation time, they make great log entries, event IDs, and database primary keys.
FAQ
- How is ULID different from UUID v4?
- The first 48 bits of a ULID encode a millisecond timestamp, so lexicographic sorting yields chronological order. UUID v4 is fully random and offers no ordering, which fragments database B-tree indexes. RFC 9562 UUID v7 is also time-based, but ULIDs are 26 characters (a bit shorter than UUID) and hyphen-free, making them friendlier for URLs and CLIs.
- What does the Monotonic option do?
- When you generate several ULIDs in the same millisecond, monotonic OFF generates independent random parts, so ordering may break. Monotonic ON increments the previous random part by 1 to guarantee ordering. You can fit up to 2^80 IDs per millisecond; if the counter overflows it bumps the timestamp by 1 ms and resets.
- Does adding a prefix violate the ULID spec?
- Modern systems often add domain prefixes like Stripe (`pi_...`), Slack (`U...`), or AWS (`i-...`). Just remember that sorting compares the whole string including the prefix, so mixing IDs from different domains breaks ordering across domains.
- Why are ULIDs 26 characters?
- The spec encodes 128 bits using Crockford Base32 (0-9 and A-Z minus I/L/O/U — 32 characters). 128 / 5 = 25.6 → 26 chars. Crockford Base32 omits visually ambiguous characters, making ULIDs easier to read and write by hand.
- Are lowercase ULIDs valid?
- The spec canon is uppercase, but most implementations compare case-insensitively, so lowercase works in practice. This tool defaults to uppercase (spec-compliant); switch to lowercase only if your downstream system requires it.
- Is my data sent to a server?
- No. It only uses crypto.getRandomValues and Date.now(), and everything stays in your browser. Generated timestamps are never transmitted.
Related tools
UUID generator — v4 / v7 batch generation
Generate UUID v4 (random) or UUID v7 (timestamp-prefixed) in batches of 1–100. Backed by crypto.getRandomValues and runs entirely in your browser.
UUID parser — version, variant, timestamp
Paste a UUID and inspect its version (v1–v8 / Nil / Max), variant (RFC 9562 / Microsoft / legacy NCS), canonical / compact / braced / URN forms, integer (BigInt), and raw bytes — all at once. UUID v1 and v6 expose the embedded timestamp + node MAC, and UUID v7 reveals the Unix epoch ms used as the prefix. Braces, whitespace, the urn:uuid: prefix, and mixed case are normalized automatically. Nothing leaves the browser.
Password generator — strength, char sets, length
Generate strong random passwords in batches of 1–25. Pick length, character sets, and toggle look-alike exclusion. Backed by crypto.getRandomValues and runs entirely in your browser.
Barcode generator — JAN / EAN / UPC / CODE128 / CODE39
Turn numbers or text into 1D barcodes (JAN-13 / EAN-13, JAN-8 / EAN-8, UPC-A, CODE128, CODE39, ITF, Codabar/NW-7, MSI) and export them as PNG or SVG. Fine-tune bar width, height, colors, margin, and whether the human-readable value is printed below. Check digits are validated automatically. Everything is generated inside your browser — the value you enter never leaves your device.