← All Tools

UUID's Fourth Group First Character: The One Letter Nobody Reads

Guide · Last verified Aug 28, 2026

Most people look at a UUID as one solid block of 32 hex digits — just a "unique random string." But in something like 550e8400-e29b-41d4-a716-446655440000, the first character of the third hyphen-separated group and the first character of the fourth group are not random at all. RFC 4122 deliberately reserves these two positions as metadata bits, and reading just those two characters is enough to instantly tell what version a UUID was generated with and whether it conforms to the standard.

1. The first character of the third group: the version number

A UUID is a 32-character hex string split into 8-4-4-4-12 groups by four hyphens. The first character of the third group (the 4-character block) is always designed to represent the UUID version. Its value ranges from 1 to 5, and each number corresponds to a different generation method.

VersionGeneration method
v1Timestamp + MAC address
v3MD5 hash of namespace + name
v4Fully random (most common)
v5SHA-1 hash of namespace + name

In other words, checking just the 15th character of a UUID string (counting hyphens as index positions) tells you immediately "this is v4." The UUID Converter's analysis logic works exactly on this principle — it checks whether the 15th character of the input falls in the 1-5 range to display the version, and if it falls outside that range, it doesn't guess: it honestly shows "Unknown."

2. The first character of the fourth group: the variant bits

Far less known than the version is the first character of the fourth group — the variant bits. This position is a single hex character (4 bits), but only the upper 2-3 bits of it actually carry meaning. The standard variant defined by RFC 4122 requires the binary pattern 10xx (the first two bits must be 1, 0), and only four hex characters satisfy this pattern: 8, 9, a, and b.

Why 8, 9, a, b: Written out in binary, the 4-bit hex characters are 8=1000, 9=1001, a=1010, b=1011. Only these four characters start with the two bits "10." So a UUID that follows the RFC 4122 standard must have its fourth group start with 8, 9, a, or b. Conversely, starting with 0-7 means the legacy NCS-compatible scheme, starting with c/d means the Microsoft scheme, and starting with e/f falls in a reserved range.

The UUID Converter implements this classification precisely in code as well — it parses the fourth group's first character as a hex integer, and classifies it as NCS if it's below 8, RFC 4122 if it's below 12 (0xc), Microsoft if it's below 14 (0xe), and reserved if it's higher. There's one exception: the NIL UUID, where every bit is zero (00000000-0000-0000-0000-000000000000), is defined by RFC 4122 as a special separate value, so this tool doesn't apply the normal variant rule to it and instead shows "—" for its variant.

3. A hands-on example: identifying UUIDs from two characters

The table below compares three UUIDs that look like they carry information in the same position but actually mean very different things.

UUIDVersion (3rd group, 1st char)Variant (4th group, 1st char)Interpretation
550e8400-e29b-41d4-a716-4466554400004 → v4a → RFC 4122Standard random UUID
a0eebc99-9c0b-31ef-a736-4795032000003 → v3a → RFC 4122MD5 namespace-based
ffffffff-ffff-7fff-ffff-ffffffffffff7 → Unknownf → ReservedNon-standard value (a newer version like v7, or a corrupted value)

As in the third example, if the version position falls outside the 1-5 range — 6, 7, or 8 — that UUID sits outside the RFC 4122 v1-v5 spec that this tool handles. In practice, a value like this could be a newer spec (such as the sortable UUID v7), or it could be an unrelated random string that happens to match the UUID shape by coincidence. If the version field shows Unknown, it's worth double-checking the original data source.

4. When this knowledge actually comes in handy

If you need to generate a large batch of standard UUIDs, using the UUID Bulk Generator to produce them all at once will keep the version and variant bits consistently correct — far more reliably than crafting values by hand.

Frequently Asked Questions

Q. Why hide this information specifically in the third and fourth groups?

When RFC 4122 was designed, part of the UUID's 128 bits was allocated to identifying version and variant, and the start of the third group and the start of the fourth group happened to land on those bit positions in the 8-4-4-4-12 grouping. The remaining bits carry the actual data — timestamp, random values, hashes, and so on.

Q. If the variant isn't 8/9/a/b, is the UUID invalid?

As long as the shape (8-4-4-4-12 hex) is correct, it's still a "validly formatted UUID string." It just means the value doesn't follow the RFC 4122 standard, so code that assumes values were generated by a standard library might behave unexpectedly when parsing it.

Q. How does this tool display UUID v7?

Since v7's version position is "7," it isn't caught by the 1-5 range check and shows as Unknown. Handling sortable, timestamp-based UUID v7 values properly requires a separate tool that supports the version 7 spec.

Q. Why does the NIL UUID's variant show as "—"?

Every one of the NIL UUID's 128 bits is zero, so the first character of its fourth group is also 0. Under the normal rule, 0 would classify as NCS, but RFC 4122 defines NIL as its own special value entirely, so applying the general variant rule to it would be inaccurate — this tool marks it separately as "—" instead.