UUID UUID Generator

Free · No signup · No install

UUID Validator

Paste one value per line to check whether it is a well-formed UUID, which version and variant it carries, and — for v1, v6 and v7 — the timestamp stored inside it.

  • Takes UUID, GUID and 32-hex input
  • Decodes v1 / v6 / v7 time
  • Nothing leaves your browser

UUID Validator

Validator
Up to 200 lines. Braces, quotes, upper case and missing hyphens are all accepted.

Result 0

Results appear here.

Generated locally with the Web Crypto API — nothing leaves your browser. Shortcut: Ctrl + Enter — Regenerated

What is a UUID Validator

A UUID validator answers two different questions. The first is structural: is this string a well-formed 128-bit identifier — 32 hex digits, normally written as 8-4-4-4-12, with the version nibble and the variant bits set the way RFC 9562 requires. The second is semantic: what does the value actually contain?

This tool checks both. It normalises the input first, so braces, parentheses, quotes, upper case and a missing hyphen run are all accepted, then reports the version, the variant and — where the layout allows it — the embedded time. It deliberately does not claim that a UUID was ever issued: UUIDs are created without any central registry, so “valid” can only ever mean “well-formed and self-consistent”.

How to

  1. Paste one value per line — up to 200 lines at a time.
  2. Press Validate. Each line is parsed on its own, so a broken entry does not stop the rest.
  3. Read the table: validity, the version nibble, and a decoded description of what the value contains.

Use cases

  • Debugging API responses where an identifier may be a UUID, a GUID, a slug or something else entirely.
  • Sanity-checking a data import before a migration: are all rows really 32 hex digits, or is one column full of truncated values?
  • Confirming which version a system really emits — v4 for random keys, v7 when the database relies on insert order, v1 for legacy Windows tooling.

Structure

The 13th hex character carries the version and the 17th carries the variant. Everything before those markers is payload: for v4 it is random, for v7 the first 48 bits are a Unix millisecond timestamp, for v1 and v6 a 60-bit count of 100-nanosecond ticks since 1582-10-15.

That is why only some versions can be decoded. A v3 or v5 UUID is the MD5 or SHA-1 hash of a namespace plus a name, and a hash cannot be run backwards, so the validator can confirm the structure but cannot tell you which name produced it.

Compare UUID Validator with other formats

OptionWhen to use
UUID v1Time + node. The 60-bit timestamp and the node field can both be decoded.
UUID v4122 random bits. Well-formed or not is all there is to know.
UUID v748-bit Unix time first, then random. The timestamp is directly readable.
UUID v3 / v5Hash of a namespace and a name. Structure verifiable, input not recoverable.

Code examples

JavaScript

// Strict check: version 1-8 and an RFC variant nibble.
const STRICT = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;

STRICT.test('550e8400-e29b-41d4-a716-446655440000'); // true
STRICT.test('550e8400-e29b-01d4-a716-446655440000'); // false, version 0

Python

import uuid

try:
    u = uuid.UUID('550e8400-e29b-41d4-a716-446655440000')
    print(u.version, u.variant)   # 4, 'specified in RFC 4122'
except ValueError as exc:
    print('not a uuid:', exc)

PostgreSQL

-- Reject the row rather than let a bad value through
ALTER TABLE items ADD CONSTRAINT items_id_is_uuid
  CHECK (id::text ~ '^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$');

-- PostgreSQL 18 can read the metadata directly
SELECT uuid_extract_version(id), uuid_extract_timestamp(id) FROM items LIMIT 5;

Frequently asked questions

What makes a UUID invalid?

Three things, in order: the string is not 32 hex digits once separators are removed; the version nibble (13th hex character) is 0, 9 or above, which no RFC version uses; or the variant bits (17th character) match none of the defined variants. Case, braces and missing hyphens are not errors — they are just alternative notation.

Can I decode the time from any UUID?

No. Only v1, v6 and v7 embed a clock reading. v4 is pure random and carries no payload. v3 and v5 are hashes, and a hash cannot be reversed to reveal the name it was computed from.

Does a valid UUID mean the record exists?

No. UUIDs are designed to be created independently by any machine without a registry, so nothing about the string tells you whether it was ever stored anywhere. Validation is about format and self-consistency only.