Skip to content
UUID App
Contact
UUID App

ULID Generator

Your new ULID is ready below. Click Copy to use it, or Generate for a fresh one.

Your ULID26 characters
XXXXXXXXXXXXXXXXXXXXXXXXXX
  • Free, no sign-up
  • Follows the official RFC 9562 standard

Free UUID generator: v4, v7, GUID and more

Need more? Make them in bulk

Make up to 10,000 ULIDs at once and save them as a file. Three quick steps.

Pick a file type
Check and download

What is a ULID?

A ULID is a 128-bit ID that starts with the time it was made, so ULIDs sort in creation order. It is written as 26 characters.

ULID stands for Universally Unique Lexicographically Sortable Identifier. The first 48 bits are the time in milliseconds and the last 80 bits are random. Sort ULIDs as plain text and they come out oldest first.

ULIDs use Crockford Base32: the digits 0 to 9 and the letters A to Z without I, L, O and U, which are easy to misread. The usual form is uppercase, but readers should accept either case. It is the same size as a UUID, so it fits a 16-byte UUID column too.

What a ULID looks like

Here is the ULID you just made, split into its parts. Click Generate above and watch the end change.

  • The first 10 characters are the time it was made: 48 bits, in milliseconds since 1970.
  • The last 16 characters are random: 80 bits in total.

Its time part says it was made at the moment you opened this page.

Need 10,000 UUIDs? Export to CSV, JSON or SQL. Try it free

When to use a ULID

Good for

  • Database keys that should stay in insert order
  • Log and event IDs you want to sort by time
  • File or object names that list oldest first
  • Shorter IDs than a UUID, with no hyphens

Pick something else when

  • Your database or API expects a UUID: UUID v7 sorts the same way
  • The creation time must stay private: UUID v4
  • You want a shorter ID for links: Nano ID
  • The same input must give the same ID: UUID v5

Make a ULID in code

import { ulid, monotonicFactory } from 'ulid';

console.log(ulid());

// Strictly increasing, even within the same millisecond:
const next = monotonicFactory();
console.log(next(), next());

Uses the ulid package from npm. ulidx has the same functions.

ULID vs UUID v7, UUID v4 and Nano ID

FormatLengthSorts by timeFits a UUID column
ULID (this page)26 charsYesYes, as 16 bytes
UUID v736 charsYesYes
UUID v436 charsNoYes
Nano ID21 charsNoNo
Need 10,000 UUIDs? Export to CSV, JSON or SQL. Try it free

Questions people ask

Should I use a ULID or a UUID v7?

Both start with a 48-bit millisecond time, so both sort by creation time. UUID v7 is part of the UUID standard and works with UUID columns and libraries as is. A ULID is shorter as text. If your database has a UUID type, UUID v7 is usually the easier choice.

What happens if I make many ULIDs in the same millisecond?

In monotonic mode, the random part goes up by one for each new ULID in that millisecond, so they stay in order. Bulk lists on this page work this way: each ID is strictly greater than the one before.

Does a ULID show when it was made?

Yes. Anyone can read the time from the first 10 characters. Do not use ULIDs where the creation time should stay private. Use UUID v4 instead.

Why are there no I, L, O or U characters?

ULIDs use Crockford Base32, which leaves those letters out. I, L and O are easy to confuse with 1 and 0, and dropping U makes rude words less likely.

Can I store a ULID in a UUID column?

Yes. A ULID is 128 bits, the same as a UUID, so many libraries can convert it to 16 bytes or a UUID string. The stored value will not look like the 26-character text. Databases that compare UUIDs byte by byte, like PostgreSQL, keep the same sort order.