Skip to content
brownie.tools

UUID Generator

Generate random, time-ordered or name-based UUIDs; format results and inspect existing IDs.

Runs locally in your browser. Nothing is uploaded or sent to a server.

Choose a Version and click Generate UUID to create an identifier in your browser. For v4, v7 or v1, set Count to generate up to 10,000 IDs. Choose Standard, braces, URN or Base64url output, then copy individual results, a SQL list or a JSON array. Multi-result batches also offer TXT, CSV and JSON downloads. Use Decode and validate to inspect versions, read supported timestamps and find duplicate values across different textual formats.

Updated

How do you generate a UUID or a reusable name-based ID?

For a fresh random ID, leave Version on v4 (random), keep Count at 1 and click Generate UUID. For several IDs, increase Count before generating. To reproduce an identifier from known input, select v5 (name-based, SHA-1), choose DNS under Namespace and enter www.example.com as Name. Keep Format on Standard, Uppercase off and With hyphens on.

The v5 result is 2ed6657d-e927-568b-95e1-2665a8aea6a2. Selecting v3 with that same namespace and name gives 5df41881-3aed-3515-88a7-2f4a814cf09e. These are repeatable examples, unlike random generation. Paste either into Decode and validate to confirm its version and canonical spelling. Neither name-based result contains a creation timestamp.

The DNS namespace is the fixed UUID 6ba7b810-9dad-11d1-80b4-00c04fd430c8. Generation hashes its 16 bytes followed by the UTF-8 bytes of the name, then sets the version and variant bits. It does not resolve the domain or fetch its website. Changing a name's case, adding a space or choosing a different namespace changes the hash input.

What is a UUID, and which versions are available?

A UUID is a 128-bit identifier, represented by 32 hexadecimal digits. Standard text adds four hyphens in an 8-4-4-4-12 grouping. RFC 9562 supersedes RFC 4122 and defines the current UUID layouts. A UUID identifies a value; it does not certify the record's source, grant permission or prove that a record exists.

Generation choices and their inputs
VersionHow this tool builds itResult count
v4Random bytes, version and variant bits1–10,000
v7Millisecond timestamp, counter and random bytes1–10,000
v1Timestamp, random clock sequence and random node1–10,000
v5 / v3Namespace plus name, hashed with SHA-1 / MD5One
Nil / MaxAll zero bits / all one bitsOne fixed value

Versions 2, 6 and 8 are not generation options. URL, OID and X.500 are additional built-in namespaces for name-based generation. Custom UUID accepts a hyphenated namespace UUID, with surrounding whitespace trimmed. The name itself is preserved, including whitespace; an empty name is accepted. These modes create deterministic identifiers, not password hashes. For a standalone digest, use Hash Calculator.

How do v7 and v1 handle timestamps?

Version 7 puts a 48-bit Unix millisecond timestamp first. This implementation adds a 12-bit counter, maintaining increasing values within the running generator even when the clock repeats or moves backward. When the counter exceeds 4095, its stored millisecond advances and the counter resets. A decoded timestamp can therefore reflect that logical advance rather than the exact wall-clock reading.

Time ordering can suit database keys, but choose with your application's indexing and privacy requirements in mind. Version 7 exposes its embedded time. Version 4 has no time field. The counter is held in module memory, so it does not coordinate separate tabs, devices or fresh sessions.

Version 1 encodes time as 100-nanosecond ticks from the UUID Gregorian epoch. Here, the source clock is Date.now(), with ticks incremented when needed to avoid repeating the previous tick. This does not imply 100-nanosecond clock accuracy. The node is randomly generated with its multicast bit set; this tool does not read your hardware MAC address. Its field layout also differs from v7's timestamp-first ordering.

How does random generation affect collision risk?

For v4, the engine prefers crypto.randomUUID(). Its fallback fills 16 bytes through crypto.getRandomValues() and sets four version bits plus two variant bits. The remaining 122 bits are random. The v1 and v7 implementations also use crypto.getRandomValues() for their random fields; they do not use Math.random().

Under the independent uniform model, two v4 UUIDs match with probability 1/2^122. A growing collection has more possible pairs, so that pairwise probability is different from the chance of any collision in the collection. Keep database uniqueness constraints. Repeating a v5 input intentionally repeats its UUID, and repeatedly selecting Nil or Max returns the same constant.

Which output format should you copy or store?

Standard output is 36 characters; disabling With hyphens leaves 32 hexadecimal digits. Braces wrap the value, URN adds urn:uuid:, and Base64url encodes the same 16 bytes into 22 characters without padding. Uppercase changes hexadecimal presentation, while the URN prefix stays lowercase. Base64url disables both case and hyphen controls because its character case and alphabet carry data.

Formatting changes spelling rather than identity. Use the representation your receiving API or database expects; shorter text is not automatically a supported storage format. Changing Version or Format after generation leaves the existing batch intact. Click the generation button again to apply new settings; random or time-based versions then produce fresh IDs.

Copy SQL list produces comma-separated quoted values without parentheses or an INSERT statement. Copy JSON array produces a JSON string array. For multiple results, Download .txt uses one value per line, Download .csv adds a uuid header, and Download .json writes an array. All include the entire batch even when only the first 100 rows are visible. Use JSON Formatter to inspect a copied array.

What does decoding and list validation actually check?

Decode and validate normalizes supported text to a lowercase hyphenated Canonical value and reports Version and Variant. Timestamp (UTC) is extracted for v1, v6 and v7, with Node shown for v1 and v6. Random v4, name-based v3/v5, Nil and Max have no decoded timestamp. Use Unix Timestamp Converter for separate timestamp conversions.

Validate a list expects one UUID per line, not a pasted JSON array or SQL list. Blank lines are ignored; invalid entries retain their original line numbers. Duplicate comparison uses canonical bytes, so uppercase and hyphen-free spellings of the same UUID are duplicates. The duplicated count measures distinct repeated values, not every extra occurrence. The interface shows at most 20 invalid entries and 20 duplicate values.

Validation checks whether the text can be parsed; it does not require a particular version or the RFC 9562 variant, and it does not search a registry of previously issued IDs. Generation, hashing, decoding and export operate locally in the browser. No domain lookup, account or server-side generation is part of this tool's workflow.

How to Use UUID Generator

  1. Version

    Select v4 (random), v7 (time-ordered), v1 (timestamp), a name-based version, Nil (all zeros) or Max (all ones).

  2. Count

    For v4, v7 or v1, enter 1 to 10,000. For v5 or v3, use Namespace and Name instead. Nil and Max each return one fixed value.

  3. Format

    Choose Standard, Braces {…}, URN (urn:uuid:…) or Base64url (22 chars). Set Uppercase and With hyphens when available.

  4. Generate UUID

    Generate one result, or click the button labeled with your batch count, such as Generate 10 UUIDs. Use Copy UUID, Copy All, Copy SQL list or Copy JSON array; multi-result batches also show download buttons.

  5. Decode and validate

    Switch modes to inspect an existing UUID under Decode a UUID, or paste One UUID per line under Validate a list to check syntax and duplicates.

Frequently Asked Questions