UUID Validator
Validate any UUID or GUID instantly — detects version, variant, format errors, and shows decoded fields. Works offline. Nothing is sent to any server.
What This Tool Does
How the UUID Validator Works
This tool performs instant client-side UUID validation entirely in your browser using JavaScript. When you paste a UUID, it checks three things in sequence:
| Check | What it verifies | Common errors caught |
|---|---|---|
| Format | The string matches the 8-4-4-4-12 hexadecimal pattern (36 characters with hyphens) | Wrong length, non-hex characters, missing hyphens, extra characters |
| Version bit | The first hex digit of the third group (character 15 in the 36-character form) indicates version 1–8 | Version 0 or 9+ (invalid), corrupt UUID, truncated value |
| Variant bit | The first hex digit of the fourth group (character 20) is 8, 9, a, or b for the RFC 9562 variant | Older pre-RFC formats, non-standard UUID types, byte-order variants |
For the official layout and special Nil/Max values, see the RFC 9562 UUID specification.
It also accepts UUIDs with curly braces ({…} as used in C# and COM), and UUIDs without hyphens (32 hex characters), normalising them to canonical form before validation.
Your UUIDs never leave your browser
Every UUID you paste is validated locally using your browser’s JavaScript engine. The validator logic runs locally and does not intentionally transmit or store the entered UUID. Other scripts loaded by the website are outside this tool’s validation logic.
Format Reference
What Makes a UUID Valid?
For the RFC 9562 variant and UUID versions 1–8, this checker requires the format and field values below. Nil and Max UUIDs are special exceptions. The checker does not prove authenticity or uniqueness:
| Property | Required Value | Example |
|---|---|---|
| Total length | 36 characters (with hyphens) or 32 (without) | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| Character set | Hexadecimal only: 0-9 and a-f (case-insensitive) | a-f, 0-9 — no g, h, z, etc. |
| Hyphen positions | After hex digits 8, 12, 16, and 20 (string positions 9, 14, 19, and 24) | Groups of 8-4-4-4-12 hex digits |
| Version digit | Character 15 (1-based, with hyphens): versions 1–8 supported; Nil and Max are exceptions | 550e8400-e29b-41d4-… |
| Variant bits | Character 20 (1-based, with hyphens): 8, 9, a, or b for RFC 9562 variant | …-41d4-a716-… |
| Nil UUID | All 32 digits are zero — valid sentinel value | 00000000-0000-0000-0000-000000000000 |
| Max UUID | All 32 digits are f — valid sentinel value (RFC 9562) | ffffffff-ffff-ffff-ffff-ffffffffffff |
Version Detection
Detected UUID Versions
This validator automatically detects which UUID version a string represents and provides a plain-English explanation of how it was generated:
| Version | Name | How to identify | Common use |
|---|---|---|---|
| v1 | Time-based | First digit of third group = 1. Contains a 60-bit Gregorian timestamp. | Legacy distributed systems. Avoid in user-facing apps (leaks MAC address). |
| v2 | DCE Security | First digit of third group = 2. Similar to v1 with DCE principal embedded. | Rare. DCE/POSIX systems only. |
| v3 | Name-based (MD5) | First digit of third group = 3. Deterministic from namespace + name. | Deduplication where v5 is unavailable. Prefer v5. |
| v4 | Random | First digit of third group = 4. 122 random bits. | General-purpose. Default for most applications. |
| v5 | Name-based (SHA-1) | First digit of third group = 5. Deterministic from namespace + name. | Reproducible IDs from known inputs. Preferred over v3. |
| v6 | Time-ordered | First digit of third group = 6. Reordered v1 timestamp bits. | v1 migration path. Better B-tree index locality. |
| v7 | Unix Timestamp | First digit of third group = 7. 48-bit Unix ms timestamp prefix. | Database primary keys in 2026. Recommended over v4 for PKs. |
| v8 | Custom | First digit of third group = 8. All other bits are implementation-defined. | Custom structured IDs with application-specific layouts. |
Code Examples
How to Validate a UUID in Code
Need to check UUIDs programmatically? These examples show format validation or parsing. They do not verify that the ID exists or was actually generated by the claimed algorithm:
JavaScript / TypeScript
Python
PHP
SQL (PostgreSQL)
Common Errors
Common UUID Validation Errors & Fixes
| Error | Example | Fix |
|---|---|---|
| Wrong length | 550e8400-e29b-41d4-a716 (too short) | A UUID must have 36 characters including hyphens. Check for truncation during serialization or database storage. |
| Invalid version digit | 550e8400-e29b-91d4-a716-… | Position 15 (with hyphens) must be 1-8 for supported versions. Versions 9–15 are currently reserved in RFC 9562. Check your UUID generation library. |
| Invalid variant bit | …-41d4-c716-… | Position 20 (with hyphens) must be 8, 9, a, or b for the RFC variant. A value of c indicates a different reserved variant, not automatically a byte-order reversal. |
| Non-hex characters | 550e8400-e29g-41d4-… | ‘g’ is not a hex character. Only 0-9 and a-f (case-insensitive) are valid. |
| Missing hyphens | 550e8400e29b41d4a716446655440000 | 32-digit no-hyphen form is valid if the format is exactly 32 hex chars. This validator accepts it automatically. |
| Null/empty | NULL, undefined, “” | Use the Nil UUID (00000000-0000-0000-0000-000000000000) as a sentinel rather than empty strings or null where UUID type is required. |
FAQ
Frequently Asked Questions
Need to Generate a UUID?
Our UUID generator supports all 8 versions — v4, v7, v1, v5, v6, v8, Nil, and Max. Free, RFC 9562 compliant, bulk export.
Open UUID Generator