About Version 3 UUIDs
A version 3 UUID is a deterministic UUID: it is the MD5 hash of a namespace UUID followed by a name, with the version and variant bits overwritten. The same namespace and name always give the same UUID.
Names are hashed as UTF-8 bytes, which is what Python, Java, C# (with Encoding.UTF8), Go and the RFC examples do. The "Copy API call" link uses base64 so any character, including emoji, round-trips exactly.
Structure
md5(namespace + name) with version = 3 and variant = 10
When to use it
- You need stable IDs derived from existing data (URLs, domain names, emails) and must stay compatible with older systems that chose MD5.
When to avoid it
- New work: prefer v5 (SHA-1) or, for 2024+, consider v8 with SHA-256. Never rely on v3 for secrecy; it is easy to brute-force.
Frequently asked questions
What namespaces are predefined?
RFC 9562 defines DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8), URL (…b811…), OID (…b812…) and X.500 (…b814…). You can also use any UUID of your own as a namespace.
Why does my UUID differ from another tool's?
Almost always text encoding. Some tools hash UTF-16, Latin-1 or ASCII bytes instead of UTF-8. UUIDTools always hashes UTF-8.