UUID Generator — Manual

Full reference: UUID v4, v7, v1, and v5, namespaces, bulk generation 1–1000, the NIL UUID, the output format, and the browser's random source.

Back to overview: UUID Generator · Open the live tool: www.jpkc.com/tools/uuid/

This manual describes the UUID Generator in full: how the interface is laid out, what each of the four versions produces, how namespaces, bulk generation, and the NIL UUID work, and where the random values come from. The tool's interface is in English, so the labels appear here in their original spelling.

Interface layout

You operate the tool through four tabs at the top of the card, one per UUID version:

  • v4 Random (active on load)
  • v7 Time-ordered
  • v1 Time-based
  • v5 Name-based

Each tab has a short explanatory hint, the required input fields, a Generate button, and a result field with a copy button (clipboard icon). The result field is editable (contenteditable), so you can also tweak the display by hand before copying. At the very bottom, in the card footer, the NIL UUID sits permanently with its own copy button.

On load the tool checks whether the UUID library is ready; only then do the Generate buttons become active. On a freshly loaded page the result field shows the placeholder Click "Generate" to create UUIDs….

Common workflow

The same basic flow applies to every version:

  1. Pick a tab (version).
  2. For v4/v7/v1: set Number of UUIDs (the count). For v5: supply a Namespace and a Name.
  3. Click Generate.
  4. Copy the result from the field — either via the copy button or by hand.

The UUID versions in detail

Version 4: random (v4 Random)

Generates purely random UUIDs (RFC 9562, Version 4). The tab hint reads "Best for most use cases" — for most applications v4 is the right choice. There is no time or device information in the UUID; apart from the fixed version and variant bits, every bit is random.

The random values come from the browser's cryptographically secure generator: where available, the tool uses the native crypto.randomUUID(), otherwise it fills 16 bytes via crypto.getRandomValues and sets the version/variant bits itself. In both cases the source is a CSPRNG, not Math.random.

Version 7: time-ordered (v7 Time-ordered)

Generates time-ordered UUIDs (RFC 9562, Version 7). The first 48 bits are a Unix timestamp in milliseconds (big-endian), the rest is random (CSPRNG). This makes v7 UUIDs roughly sortable by creation time — described in the tab as "Sortable by creation time, modern alternative to v1". That makes them pleasant as database keys: new rows land at the end of the index instead of scattering it the way random v4 values do.

Version 1: time-based (v1 Time-based)

Generates time-based UUIDs (labeled "RFC 4122 Version 1" in the tab). They contain a Gregorian timestamp and a clock sequence. Importantly, the node part is generated randomly (with the multicast bit set); the tool does not read a MAC address — so no hardware identifier is revealed. The clock sequence is likewise randomly initialized.

One technical limit: v1 cannot emit arbitrarily many unique values per second. If a run internally exceeds the resolution (more than roughly 10 million UUIDs per second), generation aborts with an error. At the quantities selectable here (up to 1000) this is effectively never an issue.

Version 5: name-based (v5 Name-based)

Generates name-based, deterministic UUIDs (RFC 9562, Version 5). The decisive difference from the other versions: the same namespace and the same name always produce the same UUID (tab hint: "Same namespace + name always produces the same UUID"). So v5 produces no randomness, but a reproducible derivation.

Technically, the tool concatenates the 16-byte namespace and the UTF-8 encoded name, computes a SHA-1 hash over them (via the Web Crypto API, hence asynchronously), and takes its first 16 bytes as the UUID, with the version bits (5) and variant bits set. v5 always produces exactly one UUID — there is no count selector here.

For v5 you need two inputs:

  • Name — the string to derive from (placeholder "e.g. example.com"). Without a name you get the hint "Please enter a name.".
  • Namespace — see the next section.

Note: the tool offers v5 (SHA-1), not v3 (MD5). For name-based UUIDs, v5 is the recommended variant.

Namespaces for v5

The namespace defines the "context" in which the name is interpreted — the same name in two different namespaces yields two different UUIDs.

Predefined namespaces

The Namespace dropdown offers the four standard namespaces defined in RFC 9562 (Appendix A):

  • DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8) — for domain names, e.g. example.com.
  • URL (6ba7b811-9dad-11d1-80b4-00c04fd430c8) — for full URLs.
  • OID (6ba7b812-9dad-11d1-80b4-00c04fd430c8) — for object identifiers.
  • X.500 (6ba7b814-9dad-11d1-80b4-00c04fd430c8) — for X.500 distinguished names.

Custom namespace (Custom UUID)

If you pick Custom UUID in the dropdown, the Custom Namespace UUID field becomes active. There you enter your own namespace UUID in the standard format. The tool validates the format strictly (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, hex). If the value is missing you get "Please enter a custom namespace UUID."; if it is malformed, "Invalid namespace UUID format.". This lets you build a project-specific namespace hierarchy and derive v5 UUIDs reproducibly from it.

Count and bulk generation

For v4, v7, and v1 the Number of UUIDs dropdown is available. The fixed steps are 1, 2, 3, 4, 5, 10, 20, 50, 100, 200, 500, and 1000. When you generate several, the tool lists them one per line in the result field — convenient for copying as a block. v5 has no count selector and returns exactly one UUID.

The NIL UUID

The card footer permanently shows the NIL UUID 00000000-0000-0000-0000-000000000000 — the "empty" UUID in which all 128 bits are zero. It serves as a placeholder or null value where a UUID is expected but none real is set. A small copy button beside it puts it on the clipboard. The tool does not offer a MAX UUID.

Copying

The copy button (clipboard icon) next to each result field puts the whole content on the clipboard. If you have not generated anything yet (only the placeholder is in the field), the hint "No UUIDs to copy. Generate some first." appears. The separate button on the NIL UUID entry copies only the NIL UUID.

Output format

All UUIDs are emitted in the canonical format: 32 hex digits in lowercase, grouped as 8-4-4-4-12 with hyphens, for example:

f47ac10b-58cc-4372-a567-0e02b2c3d479

The tool offers no alternative output formats — no uppercase, no braces, no hyphen-free variant, and no Base64 encoding. If you need another format, reformat the copied UUID afterwards (the editable result field allows small manual tweaks).

Random source and security

The random versions v4, v7, and v1 draw their random bits from the browser's cryptographically secure random generator — crypto.getRandomValues, and for v4 directly crypto.randomUUID() where available. This matters for security: unlike Math.random, this source is not predictable, so UUIDs cannot be guessed. v5 is not random but computed deterministically via a SHA-1 hash. Because the tool uses the Web Crypto API, it runs in a secure context (HTTPS).

Operating limits and privacy

  • Client-side: all generation happens in the browser. There is no server call, no transmission of names, namespaces, or results.
  • Secure context: the Web Crypto API in use requires HTTPS (or localhost).
  • Quantities: 1 to 1000 UUIDs per run (v4/v7/v1); v5 exactly one.
  • Fixed format: output is solely in the canonical lowercase hyphenated format.
  • Versions: v4, v7, v1, v5, plus the NIL UUID — no v3, no MAX.

For the introduction and version recommendation see the overview page. Concrete walkthroughs are in the examples, strategy and pitfalls in the tips & tricks. You can try everything directly in the tool.