UUID v3 Generator
Pick a namespace and type a name. The same name always gives the same ID. ClickTap Copy to use it.
Enter a full UUID, like 6ba7b810-9dad-11d1-80b4-00c04fd430c8.
- Free, no sign-up
- Follows the official RFC 9562 standard
Make UUID v3s from a list
Paste up to 10,000 names and get one UUID v3 for each, using the namespace above. Three quick steps.
What is a UUID v3?
A UUID v3 is an ID made from a name with the MD5 hash. The same namespace and name always give the same ID.
Version 3 works just like version 5, but it uses MD5 instead of SHA-1. It hashes a namespace UUID together with your name, then sets 6 bits to mark the version and variant.
It is still valid, and some older systems rely on it. For anything new, the standard says to use v5 instead. Only pick v3 when you must match IDs that already exist.
What a UUID v3 looks like
Here is the ID for the name you typed, split into its parts. Change the name and watch it change.
- The 3 means version 3. It is always in this spot.
- This digit is always 8, 9, a or b. It marks the standard layout.
- Everything else is hash bits: 122 bits taken from the MD5 hash of the namespace and name. They look random, but they are fixed for that name.
When to use UUID v3
Good for
- Matching IDs an older system already made with v3
- Java code that uses UUID.nameUUIDFromBytes
- Rebuilding the same IDs during a data migration
- Checking that two tools agree on a v3 ID
Make a UUID v3 in code
import { v3 as uuidv3 } from 'uuid';
const id = uuidv3('example.com', uuidv3.DNS);
console.log(id); // 9073926b-929f-31c2-abc9-fad77ae3e8ebUses the uuid package from npm. Browsers and Node.js have no built-in v3.
import uuid
id = uuid.uuid3(uuid.NAMESPACE_DNS, 'example.com')
print(id) # 9073926b-929f-31c2-abc9-fad77ae3e8ebThe uuid module ships with Python.
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
UUID ns = UUID.fromString("6ba7b810-9dad-11d1-80b4-00c04fd430c8"); // DNS
byte[] name = "example.com".getBytes(StandardCharsets.UTF_8);
ByteBuffer buf = ByteBuffer.allocate(16 + name.length);
buf.putLong(ns.getMostSignificantBits());
buf.putLong(ns.getLeastSignificantBits());
buf.put(name);
UUID id = UUID.nameUUIDFromBytes(buf.array());
System.out.println(id);Built into Java. nameUUIDFromBytes has no namespace argument, so put the 16 namespace bytes in front of the name to match other tools.
import "github.com/google/uuid"
id := uuid.NewMD5(uuid.NameSpaceDNS, []byte("example.com"))
fmt.Println(id)Uses the widely used google/uuid package. NewMD5 makes a v3.
use Ramsey\Uuid\Uuid;
$id = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'example.com');
echo $id->toString();Uses the ramsey/uuid package from Composer.
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
SELECT uuid_generate_v3(uuid_ns_dns(), 'example.com');Needs the uuid-ossp extension, which ships with PostgreSQL.
UUID v3 vs other versions
Questions people ask
Is UUID v3 deprecated?
No, it is still part of the standard (RFC 9562). But the standard says to use UUID v5 instead wherever you can. Keep v3 for matching IDs that already exist.
MD5 is broken. Does that make UUID v3 unsafe?
For plain IDs, the risk is small. The MD5 attacks let someone craft two inputs with the same hash, which matters if outsiders choose the names. Either way, v5 is the better pick for new work.
Why does Java give me a different v3 than this page?
Java's UUID.nameUUIDFromBytes hashes only the bytes you pass. It does not add a namespace. Put the 16 namespace bytes in front of the name, as in the Java example above, and the IDs will match.
Will the same name give the same v3 everywhere?
Yes, if the namespace and the exact name bytes match. Letter case, spaces and trailing slashes all change the result.
Can I get the name back from a UUID v3?
No. The hash only goes one way. But if the name is easy to guess, someone can try names until one matches, so keep private data out of v3 names.


