Generate UUID v8

A 128-bit identifier with an application-defined payload — the spec reserves only the version and variant bits, so the remaining 122 bits are yours to assign.

Browser extensions can read all data on this page. Use a private/incognito window with extensions disabled.

Generated · 0 IDs

Options

Format
Case
Up to 32 hex chars. Empty = random tail.

This ID

Length 36 chars
Bits 128 (application-defined, version + variant fixed)
Collision risk moderate
Features
Custom layout

Collision

1% collision chance after ≈ 304,463,440 IDs
Random part 62 random bits
Counted together Same custom-data prefix

Custom data reduces the random space by overwriting bytes. The estimate follows the random bits left after your prefix and the fixed UUID version and variant bits are applied.

Validate and parse UUID v8

Paste an ID

About UUID v8

Use when: you need a UUID-shaped ID for an experimental or vendor-specific use case — RFC 9562 §5.8 reserves v8 for exactly that.

Avoid when: a standard format will do. v4 covers random IDs and v7 covers time-sortable ones — both are easier to reason about.

How it is generated

A v8 UUID is a blank UUID-shaped canvas. RFC 9562 reserves only the version nibble and the variant bits — 6 bits total — and leaves the other 122 to the application.

This page seeds the payload with random bytes, then overlays whatever hex you paste into the "Custom data" field over the leading bytes. Anything past your hex stays random. The result is a syntactically valid UUID that carries whatever shape you need.

  1. 01 Read 16 bytes from crypto.getRandomValues as the random base.
  2. 02 If "Custom data" is non-empty: hex-decode it and overwrite the leading bytes (left-aligned, partial nibble at the end is padded with 0).
  3. 03 Overwrite the high nibble of byte 6 with 1000 (version 8) and the top two bits of byte 8 with 10 (variant). Those are the only bits the spec dictates.
  4. 04 Hex-encode with dashes after bytes 4, 6, 8, 10.
xxxxxxxx-xxxx-8xxx-Nxxx-xxxxxxxxxxxx
└──┬───┘ └─┬┘ └─┬┘ └─┬┘ └────┬─────┘
   │       │    │    │       └── application bits (48)
   │       │    │    └────────── variant "10" + application bits (14)
   │       │    └─────────────── version "8" + application bits (12)
   │       └──────────────────── application bits (16)
   └────────────────────────── application bits (32)

Total: 122 application-defined bits + 6 spec-reserved bits.

All of this runs in your browser. Random bytes come from crypto.getRandomValues, timestamps come from the system clock, and nothing about the generated ID leaves the tab.

YouShallNotPass.io

Practical security tools. We never see your secrets. Open source. No accounts. No tracking.

Support YouShallNotPass.io by starring us on GitHub and sharing it with coworkers and friends.

Sister sites

© 2026 YouShallNotPass.io