Generate UUID v3

A 128-bit deterministic identifier produced by MD5-hashing a namespace UUID together with a name string, so the same inputs always yield the same ID.

Browser extensions can read all data on this page. Use a private/incognito window with extensions disabled.

Result

Recomputes whenever the namespace or name changes. Same inputs always produce the same ID.

Inputs

Namespace
Format
Case

This ID

Length 36 chars
Bits 128 (deterministic from namespace + name)
Collision risk low
Features
Deterministic
Watch out
Legacy

Collision

1% input collision chance after ≈ 326,915,130,069,136,007 different inputs
Random part 122-bit digest space
Counted together Different namespace/name inputs

The same namespace and name intentionally return the same UUID; that is not an accidental collision. The estimate is only about different inputs landing on the same 122-bit UUID output after version and variant bits are fixed.

Validate and parse UUID v3

Paste an ID

About UUID v3

Use when: you need the same UUID every time the same namespace and name are hashed, and an existing system already uses MD5-based v3.

Avoid when: you are starting fresh. Use UUID v5 instead — same idea, but SHA-1 replaces the broken MD5.

How it is generated

A v3 UUID is fully deterministic — same inputs, same output, every time. There is no timestamp, no counter, no randomness.

You supply a 16-byte namespace UUID and a name string. The two are concatenated as raw bytes (UTF-8 for the name), hashed with MD5, and the 16-byte digest becomes the UUID — with six bits overwritten to mark version and variant.

The four standard namespaces (DNS, URL, OID, X.500) are defined in RFC 9562 §6.6 (Table 3); you can also pass your own UUID as the namespace.

  1. 01 Concatenate namespace bytes (16) and name bytes (UTF-8) into one buffer.
  2. 02 Compute MD5 of the buffer. The resulting 16 bytes are your UUID-in-progress.
  3. 03 Overwrite the high nibble of byte 6 with 0011 (version 3) and the top two bits of byte 8 with 10 (variant).
  4. 04 Hex-encode with dashes after bytes 4, 6, 8, 10.
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
└──┬───┘ └─┬┘ └─┬┘ └─┬┘ └────┬─────┘
   │       │    │    │       └── digest bytes 10..15 (48 bits)
   │       │    │    └────────── variant "10" + low 14 bits of digest bytes 8..9
   │       │    └─────────────── version "3" + low 12 bits of digest bytes 6..7
   │       └──────────────────── digest bytes 4..5 (16 bits)
   └────────────────────────── digest bytes 0..3 (32 bits)

Source: MD5(namespace_uuid (16B) ++ name_utf8). Only the version
nibble and variant bits are overwritten; everything else is the digest.

All of this runs in your browser. Random bytes come from crypto.getRandomValues, timestamps come from the system clock, and nothing about the generated ID leaves the tab.

YouShallNotPass.io

Practical security tools. We never see your secrets. Open source. No accounts. No tracking.

Support YouShallNotPass.io by starring us on GitHub and sharing it with coworkers and friends.

Sister sites

© 2026 YouShallNotPass.io