About this tool
What is a ULID?
Universally Unique Lexicographically Sortable Identifier: 26 Crockford-base32 characters where the first 10 encode a millisecond timestamp and the rest is randomness (e.g. 01ARZ3NDEKTSV4RRFFQ69G5FAV). Sortable like time, unique like UUIDs.
How to use it
- Generate one or a batch; newer IDs sort after older ones automatically.
- Parse any ULID to inspect its timestamp component.
- Use as database keys when creation order matters.
Examples
- Event-sourced systems where order equals causality.
- Log correlation IDs that sort chronologically for free.
- Public IDs that should not reveal sequence gaps (unlike auto-increment).
Important limitations
- Millisecond precision only — 256+ IDs in the same millisecond need monotonic handling.
- The timestamp is public: anyone can read creation time from the ID.
- Not secret and not a password; same warnings as UUIDs apply.
Privacy
Generated locally with secure randomness. Timestamps inside IDs are visible to anyone holding them — factor that into what you expose.
Frequently asked questions
ULID vs UUIDv7?
Both sortable and time-ordered; ULID is shorter and URL-safe, UUIDv7 is standards-track (RFC 9562). Either is fine for new systems.
Case sensitive?
Crockford base32 is case-insensitive by design; uppercase is canonical.
Monotonicity within one millisecond?
This generator increments the random part when the clock has not advanced — order preserved.