🆔 UUID Generator - Generate unique identifiers

🔧
📊
🎨
📤
{{ uuid }}
🔍
Version: {{ version }}
Timestamp: {{ getTimestamp(rawUuids[0]) }}
Variant: RFC 4122
Format: {{ rawUuids[0].length === 36 ?'Standard (with hyphens)' :'Compact (no hyphens)' }}
⚠️ {{ error }}

ℹ️ About UUID Generation

A UUID (Universally Unique Identifier), called a GUID in Microsoft systems, is a 128-bit value written as 32 hexadecimal digits in the 8-4-4-4-12 shape defined by RFC 9562 (formerly RFC 4122), for example 550e8400-e29b-41d4-a716-446655440000. The first digit of the third group is the version and the first digit of the fourth group (8, 9, a or b) is the RFC variant. UUIDs need no central coordination, which makes them common as database keys, request and correlation IDs, idempotency keys, file names and test fixtures.

This tool generates UUID v4 (random) and UUID v1 (time-based) identifiers in batches of up to 100, formats them as lowercase, uppercase, hyphenless or brace-wrapped GUIDs, and decodes the embedded timestamp of a single v1 result. To check or decode an existing UUID use the UUID Validator.

Supported inputs

  • Version: 4 (random) or 1 (time-based), chosen with the Version buttons or the API field version (1 or 4, default 4). Any other value is rejected; the API answers with HTTP 400 and a generic error message.
  • Quantity: 1 to 100 UUIDs per batch. The page offers 1, 5, 10, 25, 50 and 100; the API field quantity accepts any integer from 1 to 100 (default 1) and rejects anything outside that range.
  • Formatting: hyphens (default on; off gives the 32-digit compact form), uppercase (default off) and braces (default off; wraps each UUID in curly braces). On the page the checkboxes reformat the current batch instantly without generating new values; the API takes them in the formatting object.
  • No text input: there is no seed, namespace, name or custom timestamp. v1 always uses the current clock and v4 always uses fresh random data.

Output

The page lists the formatted UUIDs one per line in generation order, each with its own copy button; Copy All copies them newline-separated and Download saves them as uuids-v<version>-<quantity>.txt. When the quantity is 1 an analysis panel shows the version, the RFC 4122 variant and, for v1, the decoded timestamp as ISO 8601 UTC. The API returns success and a result object with version, quantity, rawUuids (canonical lowercase, hyphenated) and formattedUuids (the same values with the requested formatting applied, in the same order).

Example

The tool takes no UUID as input, so the values below only illustrate the formatting step. With hyphens off, uppercase on and braces on, a generated v4 UUID whose canonical rawUuids form is 550e8400-e29b-41d4-a716-446655440000 would appear in formattedUuids as {550E8400E29B41D4A716446655440000}. A v1 UUID minted at 2024-01-01T00:00:00 UTC starts with b4cc8000-a838-11ee-, and the analysis panel decodes those three time fields back to 2024-01-01T00:00:00.000Z; the last two groups hold the random clock sequence and node, so they differ on every run.

Limitations

  • Only versions 1 and 4 are generated: no name-based v3/v5, no time-ordered v6/v7, no custom v8, and no Nil or Max UUID. The Random Number Generator produces v4 and v7 from a cryptographic source, and the UUID Validator decodes v1, v6 and v7 timestamps.
  • Random bits come from JavaScript Math.random(), in the browser and in the server-side Node.js bridge alike, not from a cryptographic generator. Treat generated UUIDs as identifiers, never as passwords, bearer tokens, session secrets or keys.
  • v1 values use a fresh random 48-bit node and a random clock sequence for every UUID instead of a stable hardware address and a counter, and the multicast bit that RFC 4122 requires on random node IDs is not forced. The timestamp has millisecond resolution, so UUIDs minted in the same millisecond share their time fields and differ only in the two random groups.
  • v1 exposes its creation time to anyone who decodes it. Avoid v1 when the generation time itself is sensitive metadata.
  • Uniqueness is probabilistic. Batches are not checked for duplicates, and a UUID is not proof of identity, authorization or data integrity.

Browser or server processing

The page loads the compiled logic module (uuid-generator.logic.js) and generates, formats and decodes everything in your browser; no request is made while you use it. The public API POST /api/tools/crypto/uuid runs the same module on the server through the Node bridge, so only direct API callers send anything to the server, and that request carries nothing but the version, quantity and formatting options.

FAQ

Are UUID v4 values unique enough?

A v4 UUID carries 122 random bits, so with ideal randomness you would need about 2.7 quintillion of them before a collision becomes as likely as not; for ordinary datasets duplicates are not a practical concern. This page draws those bits from Math.random(), which is fast but not cryptographic, so do not rely on the values being unguessable, and add a unique constraint in the database if a collision would be harmful.

Is the UUID generated in my browser?

Yes. The logic module runs locally, so generating, reformatting, copying and downloading never contact the server, and the page keeps working offline once loaded. Only a direct call to the API endpoint is processed server-side.

Why do UUID v1 values not sort by creation time?

v1 stores the low 32 bits of the timestamp in the first group and the high bits in the third group, so string order does not follow time order. Read the timestamp from the single-UUID analysis panel or the UUID Validator, or use a time-ordered v7 UUID when you need sortable keys.

Can I generate UUID v7 or v5 here?

No. This page and its API accept only version 1 or 4 and reject other values. For v7 use the UUID mode of the Random Number Generator; name-based v3 and v5 UUIDs are not produced by this tool.

References

API Usage Example:

POST /api/tools/crypto/uuid
Content-Type: application/json

{
    "version": 4,
    "quantity": 5,
    "formatting": {
        "hyphens": true,
        "uppercase": false,
        "braces": false
    }
}
Ready