By Tim King · Updated
UUID Validator
Validate a List of UUIDs, Flagging Malformed Ones, and Decode Each Timestamp
OneTask is free, with no sign-up, and built by one person.
If this tool saved you time, a coffee helps keep new ones coming.
How the UUID Validator works
This UUID validator checks format, version and variant. Paste one UUID per line. Each is checked for 32 hex digits in the 8-4-4-4-12 layout, then its
version and variant nibbles are decoded so you can see whether it is a random v4, a time-ordered
v7, a legacy v1 with a MAC address in it, or something non-standard. Version 1, 6 and 7 UUIDs
have their creation time extracted. Braces, upper-case, missing hyphens and urn:uuid: prefixes
are all accepted and noted.
UUID validator: what valid means
A UUID is 128 bits, written as 32 hexadecimal digits in five hyphenated groups of 8, 4, 4, 4 and
12. That is the whole syntax, and it is easy to get wrong in the ways this tool reports: a digit
dropped when copying, a letter outside 0–9 a–f, hyphens in the wrong places after a bad string
join, or a stray { from a Microsoft registry export. Anything that is not 32 hex digits is
invalid, full stop.
Version and variant are inside the value. The first digit of the third group is the version.
The first digit of the fourth group encodes the variant: 8, 9, a or b means an RFC 4122
(now RFC 9562) UUID, which is what every modern library produces. Values 0–7 there are the
old Apollo NCS layout, c–d are reserved for Microsoft's legacy GUIDs, and e–f are held
back for the future. A UUID with a non-RFC variant is still 128 valid bits, so it is reported as
valid, but with a note that the version digit does not mean anything for it.
What the versions are. Version 4 is random: 122 bits of entropy, no information inside, the default choice for a decade. Version 7 is the modern replacement for database keys: the first 48 bits are a Unix millisecond timestamp so the values sort in creation order, which keeps index pages tidy. Version 1 is the original time-based form, with a 100-nanosecond timestamp counted from 1582 scattered across the first three groups and the generating machine's MAC address in the last group — which is why it is out of favour: it leaks the hardware address and the exact time. Version 6 is version 1 with the timestamp bits reordered so they sort. Versions 3 and 5 hash a name into a UUID with MD5 or SHA-1, version 2 is a rarely seen DCE security variant, and version 8 is reserved for custom layouts.
Timestamps are decoded. For v7 the tool reads the leading 48 bits as milliseconds and shows the UTC time. For v1 and v6 it reassembles the 60-bit timestamp, converts from the Gregorian epoch of 15 October 1582, and shows the time; for v1 it also shows the node field formatted as a MAC address. A v1 UUID from a real system will therefore tell you when and roughly where it was made, which is a useful audit fact and a useful privacy warning.
Special values. The nil UUID, all zeros, and the max UUID, all ones, are both defined by the standard and reported by name rather than as version 0 or version 15.
Forms that are accepted. Lower-case hyphenated is canonical. Upper-case is valid and
common in .NET and SQL Server output, and is noted. No hyphens at all is how some databases
store the value in a CHAR(32), and is noted. Braces {…} are the Microsoft GUID string form.
urn:uuid: is the URN form used in XML and some APIs. Each of these wrappers is stripped, the
core is validated, and the note tells you what form it arrived in so a mixed list can be
normalised.
FAQ
Is a GUID the same as a UUID?
Yes for practical purposes. GUID is Microsoft's name for the same 128-bit identifier. The only differences are cosmetic — Windows tools tend to write them in upper-case with braces — and a historical quirk where some old COM GUIDs use the reserved Microsoft variant rather than the RFC one. Both are accepted here.
Why is a UUID with the wrong variant still marked valid?
Because it is still a syntactically correct 128-bit identifier and most software will store and compare it without complaint. The note tells you it is not an RFC-layout UUID, which matters only if you were relying on the version digit — for a non-RFC variant that digit is just data.
Can it tell me whether a UUID is real or already in use?
No. There is no registry of UUIDs and no way to look one up; the whole design is that any two independently generated values will not collide. What the tool can tell you is whether the value is well-formed, which version made it, and for time-based versions when it was made.
Why does a v1 UUID reveal a MAC address?
Because version 1 was designed in the 1980s to guarantee uniqueness by combining the current time with the network card's hardware address, on the assumption that no two cards share one. It works, but it means every v1 UUID a system emits identifies the machine that made it. If that matters, generate v4 or v7 instead.
Should I use v4 or v7 for database keys?
v7 if your database indexes the primary key in a B-tree, which is most of them. Random v4 keys land all over the index and cause page splits and cache misses under load; v7 keys arrive in time order and append cleanly. v4 remains fine for anything that is not an index key, and for cases where the creation time must not be inferable from the identifier.
See also: all Security & Identifiers tools, Dev Utilities, Formatters & Validators, Data & Encoding, SEO, Accessibility, AI.
Related tools
UUID Generator
Random v4 or time-ordered v7 UUIDs, generated in your browser.
Base Converter
Convert numbers between binary, octal, decimal and hex.
AES Key Generator
Random AES-128, 192 or 256-bit keys in hex, Base64 or JWK.
Bearer Token Decoder
Decode an Authorization header and find out what kind of token it is.
CRC32 Calculator
CRC-32, CRC-32C and Adler-32 checksums of text or hex bytes.