UUID v3 Generator

Enter a namespace and name to receive the same deterministic UUID every time. This generator is RFC 9562 compliant (formerly RFC 4122) and processes the exact input locally in your browser.

Generate a name-based MD5 UUID

DNS example: example.com. URL: https://example.com/path. OID: dotted notation. X.500: a distinguished name.
Case-sensitive UTF-8. Spaces, trailing dots, URL schemes, and Unicode normalization change the result. Input is never trimmed or normalized.
Updates shortly after the namespace or name changes. Press Ctrl/Cmd + Enter to generate explicitly.
Advanced options

Empty lines are ignored; other whitespace is preserved. Up to 5,000 names are processed in responsive chunks.
0 names processed.

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)

UUID v3 field diagram:
XXXXXXXX-XXXX-3XXX-XXXX-XXXXXXXXXXXX
md5_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, and example.com are 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?

VersionDeterministic?AlgorithmPredictabilityRecommended use
v3YesMD5 + namespacePredictableCompatibility where MD5-based name UUIDs are required
v5YesSHA-1 + namespacePredictablePreferred by RFC 9562 over v3 where possible
v4NoRandom bitsDesigned to be unpredictable with a secure RNGGeneral independent identifiers
v7NoUnix timestamp + random bitsTime is visible; remaining bits depend on the RNGTime-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.

Explore more tools