UUID Generator & Validator

Overview

The UUID generator creates UUIDs in all versions — v1 through v7, plus NIL and MAX — and lets you generate up to 100 at once. A built-in checker validates any UUID string, returning the normalized form, version, and RFC 4122 variant.

Choosing the Right Version

v4 (random)

  • Fully random, no time or hardware data embedded
  • Most common choice for general identifiers
  • Random values cause B-tree index fragmentation when used as database primary keys at high insert volume

v7 (recommended for database keys)

  • First 48 bits are a millisecond-precision Unix timestamp
  • Naturally sorted by creation time, avoids index fragmentation
  • No MAC address — keeps time-ordering without leaking hardware info

v5 (deterministic)

  • Same namespace + same name always produces the same UUID
  • Uses SHA-1, suitable for idempotent ID generation
  • Example: domain example.com always produces cfbff0d1-9375-5685-968c-48ce8b15ae17

v1 (time + MAC)

  • Embeds the generating machine's MAC address — can leak hardware identity
  • Time-ordered, but the timestamp field is in the middle of the UUID, so sort order is not as clean as v7
  • Avoid for new projects; use v6 or v7 instead

v3 vs. v5

Both generate deterministic UUIDs from a namespace and name. v3 uses MD5, v5 uses SHA-1. Use v5 for new projects. v3 exists only for compatibility with legacy systems that require it explicitly.

Namespace and Name for v3/v5

The default namespace is the DNS namespace UUID 6ba7b810-9dad-11d1-80b4-00c04fd430c8. A different namespace produces a different UUID for the same name, so namespaces act as isolation keys. You can supply any valid UUID as a custom namespace.

What the Checker Returns

Paste any string into the checker. It returns:

  • Whether the format is valid
  • Normalized lowercase form
  • Version (v1–v7, or "unknown" for non-standard)
  • Variant: RFC 4122 (standard), NCS (legacy), Microsoft (GUID format), or Future
  • Whether it's NIL (all zeros) or MAX (all F's)

Invalid format strings get a plain "invalid" response — the checker won't guess a closest match.