ULID Generator

Create compact, time-sortable unique identifiers locally in your browser. This generator follows the canonical ULID specification, uses secure browser randomness, and never sends generated or pasted ULIDs off your device.

Your ULID

The first 10 characters encode the current Unix time in milliseconds. Same-millisecond results increase within this page session.

Advertisement

Generate a ULID batch

Enter a whole number from 1 to 10,000.

ULIDs are case-insensitive, but canonical strings are uppercase. CSV and JSON are escaped correctly.

Press Ctrl/Cmd + Enter to regenerate. The output stays in a fixed scrollable area to avoid layout shifts.

Validate and decode a ULID

Paste a 26-character ULID. The decoder checks the Crockford Base32 alphabet and 128-bit overflow limit, then extracts its timestamp and random components.

Lowercase is accepted. The letters I, L, O, and U are not part of the ULID alphabet.

Enter a ULID to see its timestamp, random component, and canonical form.

How to generate ULIDs

  1. Use the ready-made ULID above, or choose a batch quantity from 1 to 10,000.
  2. Select canonical uppercase or lowercase and choose TXT, CSV, or JSON output.
  3. Select Generate Batch, then copy the results or download the selected format.

How ULIDs work

A ULID is a 128-bit value written as 26 characters using Crockford Base32. The ULID specification divides it into a 48-bit unsigned Unix timestamp in milliseconds and an 80-bit random component.

01ARZ3NDEKTimestamp · 10 characters · 48 bits
TSV4RRFFQ69G5FAVRandomness · 16 characters · 80 bits

The encoding alphabet is 0123456789ABCDEFGHJKMNPQRSTVWXYZ. It omits I, L, O, and U, contains no punctuation, and is safe to use in ordinary URLs. The first character of a valid ULID can only be 0 through 7; higher values would overflow the 128-bit limit.

Monotonic ordering used here

At the start of each new millisecond, this tool seeds the 80-bit component with crypto.getRandomValues(). Further ULIDs in the same millisecond increment that component by one, with carrying. If the local clock moves backward while the page remains open, the generator retains its last timestamp and continues the sequence so results do not move backward.

The sequence is strictly increasing only inside this page session. Other tabs, devices, and services have independent state. In the extraordinarily unlikely event that the 80-bit field reaches its maximum within one millisecond, generation stops as required by the specification instead of wrapping and repeating a value.

Specification reviewed: .

ULID compared with UUID v7 and UUID v4

FeatureULIDUUID v7UUID v4
Text format26 Base32 characters36 hexadecimal characters with hyphens36 hexadecimal characters with hyphens
Time component48-bit Unix milliseconds48-bit Unix millisecondsNone
Random component80 bitsUp to 74 available bits122 bits
Canonical string orderChronologicalChronologicalRandom
StandardCommunity specificationRFC 9562RFC 9562
Exposes creation timeYesYesNo

Choose the format supported by your database, language, and surrounding systems. For production use, select a maintained implementation, document its monotonic behavior, and enforce a unique constraint where duplicate identifiers would matter.

ULID FAQ

What is a ULID?

ULID stands for Universally Unique Lexicographically Sortable Identifier. It is a 128-bit identifier encoded as 26 Crockford Base32 characters, with a 48-bit Unix millisecond timestamp followed by 80 random bits.

Are ULIDs guaranteed to be unique?

No distributed random identifier provides an absolute uniqueness guarantee. An 80-bit random field makes accidental collisions very unlikely, and this tool prevents repeats within its current monotonic sequence, but production databases should still enforce a unique constraint.

Do ULIDs always sort by creation time?

Canonical ULID strings sort by their millisecond timestamp when compared lexicographically. This tool also increments the random field for same-millisecond values, so generated results remain strictly increasing within the current page session.

Does a ULID reveal when it was created?

Yes. The first 10 characters encode a Unix timestamp in milliseconds, so the approximate creation time is recoverable from a ULID.

What characters can a ULID contain?

Canonical ULIDs use the Crockford Base32 alphabet 0123456789ABCDEFGHJKMNPQRSTVWXYZ. The letters I, L, O, and U are excluded, and lowercase is equivalent when parsing.

What is a monotonic ULID?

When more than one ULID is created in the same millisecond, a monotonic generator increments the 80-bit random component so the strings remain ordered. This page keeps that sequence only until it is closed or reloaded.

Is this ULID generator private?

Yes. Generation, validation, copying, and file creation happen locally in your browser. Generated and pasted ULIDs are not sent to the website.

Can I use a ULID as an API key or secret?

No. A ULID is an identifier, not an authentication secret, and it exposes its timestamp. Use a purpose-built secret-token generator and appropriate credential storage instead.

Explore more tools