Generate sortable unique IDs (ULID)
Generate one or many ULIDs, choose raw/JSON output, and copy with one click

Adjust settings to generate ULIDs...
The ULID Generator creates Universally Unique Lexicographically Sortable Identifiers (ULIDs). Each ULID is a 26-character string that combines a timestamp with randomness, making it convenient for databases, logs, and distributed systems.
What problems does it solve?
Quick note: ULIDs are great as identifiers, but they are not a substitute for secrets. If you need an unguessable secret for URLs or APIs, use our Token Generator.
Choose how many ULIDs you need
Set the quantity (from to).
Pick an output format
Use Raw when you want newline-separated IDs (great for pasting into logs or CSV cells). Use JSON when you want an array for code and APIs.
Refresh to generate a new set
Click Refresh whenever you need a new batch. The IDs are generated locally.
Copy and paste where you need them
Click Copy to copy the entire output block. If you only need one ID, set quantity to and copy.
How to interpret what you get
A ULID has two main parts: a time component and a random component. In most systems, this means IDs created later tend to sort after older IDs when compared as strings.
You are inserting a new row and want a single sortable ID.
What you copy is a 26-character string. If you also need a standardized UUID, try the UUIDs Generator.
You need a batch of IDs for unit tests and want a quick sense of how much random space you have.
Here is the number of possible random suffixes. For small batches like , collisions are extremely unlikely.
Database primary keys for ordered lists
Background: You store items and frequently query “latest first”.
Inputs: generate ULIDs (Raw).
Result: IDs are 26 characters, and later timestamps tend to sort after earlier ones.
How to use it: use the ULID as your primary key or a secondary “public id”. For strict UUID requirements, generate UUIDs instead with UUIDs Generator.
Log correlation across services
Background: You need a request ID that humans can copy from logs.
Inputs: generate ULIDs.
Result: Each ULID has a large random space.
How to use it: add the ULID to log lines, spans, or error reports to quickly correlate events.
Human-friendly public IDs in URLs
Background: You want stable, non-sequential-looking IDs in URLs.
Inputs: generate ULID.
Result: A URL-safe string (uppercase alphanumeric) without ambiguous characters.
How to use it: use ULID as a public identifier, but if the URL must be a true secret (password reset link), generate a separate secret using Token Generator.
Test data and mocked APIs
Background: You need predictable-looking IDs for QA without exposing production patterns.
Inputs: generate ULIDs (JSON).
Result: A ready-to-paste JSON array of strings.
How to use it: paste into fixtures, seed scripts, or mocked responses.
Quick JSON payloads for demos
Background: You are documenting an API and want sample payloads that look realistic.
Inputs: generate ULIDs (JSON).
Result: Copy-paste IDs for examples and docs.
How to use it: pair with Hash Text when you need checksums in the same example.
You want “newest first” ordering
ULIDs are convenient when you want identifiers that tend to sort by creation time.
You generate IDs on multiple machines
The random suffix reduces collisions even across distributed systems.
You need a copy-friendly format
ULIDs are short enough to paste and share in logs, tickets, and docs.
You want JSON-friendly output
Use JSON format to paste arrays directly into code and API examples.
You need an ID (not a secret)
Use ULID for identifiers; use Token Generator for secrets that must be unguessable.
You expose IDs publicly
ULIDs avoid sequential integer IDs, making URLs less predictable at a glance.
When ULID may not be the best fit
Practical tips
Conceptually, a ULID is built by encoding a timestamp and appending a random suffix.
is time in milliseconds, stored in bits.
is a random value, typically bits.
Collision intuition: if you generate ULIDs within the same millisecond, you are effectively drawing samples from possible random suffixes.
Lexicographically sortable
When two strings are compared character-by-character (lexicographic order), ULIDs often sort by creation time because the timestamp comes first.
This is useful for UI lists, pagination, and database indexes where “newest” and “oldest” are common queries.
ULID vs UUID
UUIDs are widely standardized and commonly used across ecosystems. ULIDs are popular for readability and time-sorting behavior.
If you need specific UUID versions (v1/v4/v5), use our UUIDs Generator.
They are designed to be extremely unlikely to collide. The random part has about bits, i.e. possibilities for the random suffix.
Yes—by design, the prefix encodes time. That’s useful for sorting, but it also means a ULID can reveal approximate creation time.
No. Use a cryptographically strong secret instead. Generate it with Token Generator.
Yes. In JSON mode, the output is a JSON array of strings. In raw mode, it’s newline-separated text.
If multiple ULIDs share the same millisecond timestamp, the random suffix decides ordering. If you need strict monotonic ordering, use a monotonic ULID generator.
Many ULID libraries can decode the time component. This tool currently focuses on generation.
Important notes
Use a simple chronometer (stopwatch) to track elapsed time down to milliseconds. Runs locally in your browser.
Normalize email addresses to a standard format for easier comparison. Useful for deduplication and data cleaning. Runs locally in your browser.
Estimate the time needed to consume a total amount at a constant rate, and get an expected end time. Runs locally in your browser.
Parse and decode your JSON Web Token (JWT) and display its content. All computation runs locally in your browser.
Know which file extensions are associated to a MIME type, and which MIME type is associated to a file extension. Includes a full MIME types table.
Generate random Lorem Ipsum placeholder text with customizable paragraphs, sentences, and word counts. Runs locally in your browser.