| Metric | Value | Copy |
|---|---|---|
| {{ r.label }} | {{ r.value }} | |
| No data yet. Generate a UUID. | ||
| # | UUID | Version | Copy |
|---|---|---|---|
| {{ row.index }} | {{ row.uuid }} | {{ row.versionDisplay }} | |
| No history yet. | |||
A UUID is a 128-bit identifier built so records can be labeled without a single central counter. The hard part is rarely producing a string. The real choice is deciding whether you need a fresh random value, the same value every time for the same name, or a value whose leading bytes reflect when it was created.
This generator covers all of the common branches in one place: version 1, 3, 4, 5, 6, and 7. It shows the latest UUID in a copy-ready summary, keeps the canonical form alongside alternate text formats, exposes the version and variant bits, exports the current details or recent history, and lets you inspect extra version 1 fields instead of treating every UUID as an unreadable blob.
For most application work, version 4 and version 7 are the two practical starting points. Version 4 gives you a fresh random identifier each time. Version 7 keeps a Unix-millisecond timestamp at the front and fills the rest with randomness, so newer values usually group later when sorted as raw bytes. Version 3 and version 5 are different: they are name-based, so the same namespace and the same name produce the same canonical UUID again.
This page also makes the less obvious parts visible. You can remove dashes, switch to uppercase, wrap the text in braces, copy the canonical form or the displayed form, and inspect a short recent history. That is useful for tests and integration notes, but it also exposes tradeoffs that matter in real systems: version 1 can reveal time and node details, version 3 and version 5 are predictable when the inputs are known, and version 7 in this build is time-ordered rather than strictly monotonic within the same millisecond.
UUID rules are now defined by RFC 9562. Every UUID is still 128 bits, but a few bits are reserved to mark the version and the variant, so the version you choose changes how the remaining bits are filled. In this generator, versions 1, 3, 4, and 5 come from the loaded UUID library, version 6 is built by generating a version 1 UUID and rewriting the timestamp into a version 6 layout, and version 7 is assembled in the browser from the current Unix time in milliseconds plus random bytes from the browser cryptography API.
Name-based UUIDs are driven by the combination of a namespace and a name string. This page accepts the standard namespace keywords DNS, URL, OID, and X500, and it also accepts a custom namespace as either 32 hex characters or a dashed UUID. Version 3 uses MD5 and version 5 uses SHA-1 because that is how those two UUID versions are defined. The point of either one is repeatability, not secrecy.
The generator supports three main patterns: deterministic name-based output, fresh random output, and time-led output.
| Version | How it is produced here | Best fit | Main caution |
|---|---|---|---|
| v1 | Time-based UUID with decoded UTC time, local time, clock sequence, node bytes, and node type shown in the metrics table | Inspection, teaching, or legacy systems that already depend on classic time-based UUIDs | Time and node structure can leak more information than many people expect |
| v3 | Name-based generation from namespace plus name using the version 3 rules | Repeatable mappings when older version 3 compatibility matters | Anyone with the same namespace and name can reproduce the same UUID |
| v4 | Fresh random UUID generation | General new identifiers with no embedded meaning | Random does not imply sortable by creation time |
| v5 | Name-based generation from namespace plus name using the version 5 rules | Repeatable mappings when you want the standard SHA-1 name-based family | Predictable from known inputs, so it should not be treated as a secret token |
| v6 | Version 1 timestamp reordered into a version 6 layout | Time-based UUIDs that sort more naturally in raw byte order | This page does not decode the version 6 internals back into human fields |
| v7 | Unix milliseconds in the first 48 bits plus random bytes from the browser random source | Modern time-led identifiers for logs, events, and database-friendly ordering | Values created in the same millisecond are not forced into strict sequence in this build |
The variant field tells you which broad UUID layout family the value belongs to. For values generated on this page, that badge will normally read RFC 4122, because the code labels the standard variant bits that way. The version field then tells you which generation family was used.
Version 1 deserves special attention because this page decodes more than the string itself. The metrics table exposes the UTC timestamp, the local timestamp rendered by your device, the clock sequence, the final six node bytes, and whether the node appears locally administered or looks like a universally unique MAC-based value. That is useful for inspection, but it is also a reminder that version 1 is not an opaque random identifier.
Version 7 is the most modern time-friendly option offered here, but it is still worth reading carefully. RFC 9562 describes version 7 as a Unix Epoch millisecond layout with random fields around it, and it allows extra monotonic techniques when an implementation wants them. This page does not add such a counter. It uses the current millisecond plus randomness, so sorting usually follows time across different milliseconds, while values created inside the same millisecond may appear in either order.
If you only need a fresh ID for a record, test fixture, or one-off reference, start with version 4. It asks for no extra inputs and gives you a clean random UUID. If you expect to sort large batches by creation time and want newer values to cluster later in raw-byte order, move to version 7. That gives you time-led ordering without the explicit node details that version 1 can expose.
Use version 5 when the same real-world name should always map to the same UUID inside the same namespace. A common example is turning a domain name, URL, or internal object path into a stable derived ID for imports or repeatable fixtures. Use version 3 only when you specifically need version 3 compatibility, because the practical difference on this page is not the workflow but the UUID family you are matching.
Choose version 1 when you need to inspect classic time-based UUID parts directly. Choose version 6 when you need a time-based UUID that sorts more naturally than version 1 but you still want to stay in that lineage. In this generator, version 6 is created by reordering a version 1 timestamp, so it inherits the time-based family behavior even though the page does not decode version 6 fields into separate metrics rows.
One page-specific behavior matters before you rely on the output. The generator refreshes automatically when you change parameters. For version 3 and version 5, the canonical UUID stays the same when the namespace and name stay the same, so uppercase, braces, or dash removal only change how the text is displayed. For version 1, 4, 6, and 7, the same formatting change creates a new UUID because the page generates a fresh value after the option change.
The short history is best treated as a working scratchpad. It keeps the latest 20 generated entries for the current page state, along with the version, variant, local timestamp, and an option summary. That is enough for comparing a batch of generated values or exporting a quick record, but it is not durable storage. Reloading the page clears it.
The most important output split is between the canonical UUID and the displayed UUID. The canonical value is the dashed lowercase base string generated by the current version. The displayed value may remove dashes, switch to uppercase, or add braces. If a downstream system asks for one exact format, copy that exact row rather than editing the text by hand.
| Output | Read it as | Do not read it as |
|---|---|---|
| UUID (formatted) | The text shape currently shown after the selected display options are applied | The only underlying representation kept by the page |
| UUID (canonical) | The base dashed UUID for the current generation | A promise that future option changes will never trigger regeneration |
| URN | The canonical UUID with the urn:uuid: prefix |
A different UUID value |
| Version | The UUID family used to generate the current value | A quality score or security rating |
| Variant | The layout family bits for the UUID | A separate naming or ordering mode chosen by you |
| v1 time and node fields | Decoded pieces of a version 1 UUID | Fields that are available for every version |
| History | A short session-level list of recently generated values and options | A permanent registry of issued identifiers |
| JSON | A snapshot of the current inputs, current UUID, optional version 1 decode, and history | Proof that a value was stored elsewhere or accepted by another system |
Version 1 rows deserve a slower read. The UTC and local time tell you when the UUID was generated. The clock sequence helps distinguish values around repeated or closely spaced timestamps. The node row shows the last six bytes of the UUID, and the node type badge warns whether those bytes look locally administered or MAC-derived. If you do not want those signals in the identifier itself, switch away from version 1.
Version 6 and version 7 are better read as ordering tools than as decoding tools. Version 6 keeps time structure in a layout that sorts more naturally than version 1. Version 7 starts with Unix milliseconds and then adds randomness. That usually makes it a better default when you want chronological grouping but do not need to expose version 1 fields directly.
The history tab is especially useful when you are comparing versions. A run of version 5 entries with the same namespace and name should keep repeating the same canonical UUID. A run of version 4 or version 7 entries should keep changing. If the page is not behaving that way, check whether you changed the version, the namespace, the name, or only the display toggles.
Select v5, enter DNS as the namespace, and use example.com as the name. The generator returns the same canonical UUID every time you reuse that exact pair.
This is useful for repeatable fixtures, import previews, or any workflow where the same real-world label should map back to the same derived ID.
Leave the page on v4 and press Generate several times. Each entry in History is a fresh identifier, and the history export gives you a quick CSV or DOCX record of what was generated in that session.
That fits seed data, issue repro notes, or QA runs where you want several independent IDs without carrying meaning inside them.
Switch to v7 when you want event identifiers that tend to group in creation order when sorted. Values created across different milliseconds should usually sort later as time moves forward.
Use that benefit as chronological grouping, not as exact sequencing. This page does not add a counter for same-millisecond generations, so two values created very close together can still swap order when compared.
Generate a v1 UUID and open UUID Metrics. The page shows when it was created, what clock sequence it used, and what the node bytes look like.
That makes version 1 useful for debugging or teaching, but it also shows why many modern systems prefer version 4 or version 7 when they do not want time and host-related structure visible in the identifier.
Pick v4 for a fresh general-purpose ID, v5 for repeatable namespace-plus-name mappings, and v7 when you want values that group by creation time more naturally. Use v1 or v6 only when that time-based family is a real requirement.
This page regenerates the current UUID when parameters change. For v3 and v5, the canonical UUID stays the same if the namespace and name stay the same. For v1, v4, v6, and v7, the page creates a fresh value when those display options change.
No server-side processing is part of this bundle. The page generates the UUIDs, the metrics, the exports, and the JSON snapshot in the browser session.
It can expose more structure than people expect. On this page you can see the timestamp, clock sequence, and node bytes for version 1 values. If that is not acceptable for your use case, use version 4 or version 7 instead.
Not in this build. They are time-ordered at the millisecond level and random within the remaining fields. That usually preserves broad chronological grouping, but not guaranteed same-millisecond sequence.
No. The current history is session-level only. Export or copy it before refreshing if you need to keep it.
urn:uuid: prefix instead of as a bare string.