UUIDv7, ULID & Nano ID Generator

Pick a format and a batch size, then copy or download the result. UUIDv7 and ULID carry the browser clock as a 48-bit timestamp; values created in the same millisecond are not ordered against each other.

Runs locally in your browser
This tool processes all data locally in your browser.
Identifier settingsUses Web Crypto randomness; UUIDv7 and ULID include a local timestamp.
Inspect UUIDv7 or ULIDDecode only the timestamp component shown by the format.

How to generate UUIDv7, ULID and Nano ID values

The page generates three identifier families with the browser randomness API: UUIDv7 (48-bit millisecond timestamp, version and variant bits, 74 random bits), ULID (48-bit timestamp in 10 Crockford base-32 characters plus 80 random bits) and Nano ID (a URL-safe alphabet, length 8 to 64). Choose a format and a batch size from 1 to 25, then copy or download the result.

Everything runs in this browser. The values are not uploaded, the page makes no request while it works, and the second card decodes the timestamp embedded in a UUIDv7 or ULID you paste.

  1. Pick a format. UUIDv7 and ULID both begin with the current time; Nano ID is random from the first character.
  2. Choose how many identifiers you need (1, 5, 10 or 25) and press Generate IDs.
  3. Press Copy to take the batch, or Download for a text file with one identifier per line.
  4. To read a timestamp back, paste a UUIDv7 or ULID into the second field and press Inspect ID.
  5. Press Clear to empty the output, the inspect field and the report before the next batch.

What each format contains

What the generated values contain

A UUIDv7 is a UUID whose first 48 bits are the Unix time in milliseconds, followed by the version nibble 7, the variant bits 10 and 74 random bits; the tool formats it in the usual 8-4-4-4-12 groups. A ULID carries the same 48-bit millisecond time in its first 10 characters and 80 random bits in the remaining 16, all in Crockford base-32, which omits I, L, O and U to avoid misreading. A Nano ID is drawn from a 64-character URL-safe alphabet, so 21 characters carry about 126 bits.

Randomness comes from window.crypto.getRandomValues: the tool refuses to generate and says so if the browser does not expose it. Nano ID length is checked against the same 8 to 64 range the field advertises.

Timestamps and ordering

UUIDv7 and ULID carry the clock of the machine running the browser, so two identifiers created in the same millisecond share one timestamp and their random parts are not ordered against each other. Sorting a batch therefore guarantees the millisecond groups, not a strict creation order, which matches how RFC 9562 leaves rand_a free.

The timestamp holds 48 bits, so it runs out in the year 10889. The inspector relies on that limit: a 26-character value whose first Crockford character is above 7 would decode past 48 bits, and the page rejects it instead of printing a date from the year 12004.

Reading a timestamp back

The inspector decodes only the timestamp. Paste a UUIDv7 with dashes (or without), or a 26-character ULID in upper or lower case, and the report shows the moment it was created as an ISO 8601 UTC value.

Values that carry no decodable timestamp are refused: a UUIDv4, a random string, or a ULID that does not fit the 48-bit range. Nothing is looked up online, so the timestamp comes from the identifier itself only.

Recent tools: