UUID v3 Generator
Generate a name-based MD5 UUID
RFC 9562 Appendix A.2 verified example
Namespace: DNS — 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name: www.example.com
Expected UUID: 5df41881-3aed-3515-88a7-2f4a814cf09e
Advertisement
How UUID v3 works
UUID v3 is a deterministic identifier: an identical namespace UUID and identical name byte sequence produce the same result. RFC 9562 superseded RFC 4122 and retains UUID v3 for compatibility with systems that require MD5-based name UUIDs.
UUIDv3 = set version/variant bits in MD5(namespace octets || name octets)
XXXXXXXX-XXXX-3XXX-XXXX-XXXXXXXXXXXXmd5_high · version · md5_mid · variant · md5_low
Exact input rules
The name is encoded as UTF-8 exactly as entered. Capitalization, leading or trailing spaces, a DNS trailing dot, a URL scheme or path, and composed versus decomposed Unicode can all change the UUID. The tool warns about outer whitespace but does not silently trim or normalize it. For interoperable results, agree on input construction and Unicode normalization before generating identifiers.
- DNS: use a domain name such as
example.com. - URL: use the agreed complete form, such as
https://example.com/path. - OID: use dotted notation, such as
1.3.6.1.4.1. - X.500: use an agreed distinguished-name representation.
UUID v3 troubleshooting
- Unexpected output: compare the namespace UUID and the exact name bytes, not merely how the text looks.
- Case or whitespace mismatch:
example.com,Example.com, andexample.comare different names. - Namespace mismatch: DNS, URL, OID, X.500, and custom namespaces deliberately produce different UUIDs for the same name.
- Unicode mismatch: visually identical text can have different code-point sequences. Normalize consistently outside this tool if your specification requires it.
- Duplicate inputs: exact duplicates intentionally map to the same UUID and are highlighted in batch results.
- Cross-language mismatch: confirm UTF-8 encoding, canonical namespace octets, namespace-before-name order, and version/variant bit setting.
Hash collisions are theoretically possible; a namespace does not guarantee that values can never collide.
Developer examples
Both examples use the RFC DNS test vector and should print 5df41881-3aed-3515-88a7-2f4a814cf09e.
Python standard library
import uuid
result = uuid.uuid3(uuid.NAMESPACE_DNS, "www.example.com")
print(result)
assert str(result) == "5df41881-3aed-3515-88a7-2f4a814cf09e"
JavaScript with the uuid package
import { v3 as uuidv3 } from "uuid";
const result = uuidv3("www.example.com", uuidv3.DNS);
console.log(result);
console.assert(result === "5df41881-3aed-3515-88a7-2f4a814cf09e");
At the byte level, implementations hash the 16 canonical namespace octets followed by the name octets, then set the UUID version to 3 and the RFC variant bits.
Which UUID version should you use?
| Version | Deterministic? | Algorithm | Predictability | Recommended use |
|---|---|---|---|---|
| v3 | Yes | MD5 + namespace | Predictable | Compatibility where MD5-based name UUIDs are required |
| v5 | Yes | SHA-1 + namespace | Predictable | Preferred by RFC 9562 over v3 where possible |
| v4 | No | Random bits | Designed to be unpredictable with a secure RNG | General independent identifiers |
| v7 | No | Unix timestamp + random bits | Time is visible; remaining bits depend on the RNG | Time-ordered identifiers and database keys |
Neither MD5 nor SHA-1 should be treated as cryptographically secure. Deterministic UUIDs must not be used as passwords, session tokens, API keys, access secrets, or proof of authorization.
Standards and privacy
This implementation follows RFC 9562 guidance for UUID version 3, namespace usage, and the official v3 test vector. RFC 9562 superseded RFC 4122.
Computation runs locally in this page; the generator does not transmit names or namespace values. UUID v3 outputs are deterministic and therefore predictable. MD5 is used only because the UUID v3 standard requires it, not as a security feature.
UUID v3 FAQ
What namespace should I choose?
Use DNS for domain names, URL for complete URLs, OID for dotted object identifiers, and X.500 for distinguished names. Use a stable custom namespace when the standard namespaces do not describe your identifier space.
Why does changing capitalization change the UUID?
UUID v3 hashes the exact UTF-8 name bytes. Uppercase and lowercase characters have different bytes and therefore normally produce different UUIDs.
Is UUID v3 secure?
No. UUID v3 is deterministic, predictable, and MD5-based. Do not use it for passwords, tokens, API keys, session IDs, or access secrets.
What is the difference between UUID v3 and v5?
Both are deterministic name-based UUIDs. Version 3 uses MD5; version 5 uses SHA-1 and is recommended by RFC 9562 where possible. Neither is a cryptographic secret.
Can two inputs collide?
Yes, in theory. UUID v3 has a finite 128-bit output and is based on MD5, so never-collide claims are incorrect. Identical namespace and name inputs always intentionally produce the same UUID.
Can I use a custom namespace?
Yes. Provide a valid UUID and keep it stable across every system that must reproduce the same identifiers.
Why does another library produce a different result?
Check the namespace, capitalization, whitespace, URL form, trailing dots, character encoding, and Unicode normalization. Implementations must hash the namespace UUID octets followed by the exact name octets before setting the version and variant bits.
