Tooleux

Generate UUID v8 (custom format) identifiers with your own layout.

Runs in your browser. Nothing leaves your device.
Generate custom UUID v8 identifiers per RFC 9562 with user-defined first, second, and third blocks. Free, offline, runs in your browser. Read more Show less

What is UUID v8?

UUID v8 is defined in RFC 9562 (2024) as the custom format UUID. Instead of a fixed layout like v1 (time + MAC) or v4 (random), v8 lets application designers specify exactly what goes in the 122 non-version/variant bits.

This makes v8 useful when you need a UUID-shaped identifier that carries meaning: a 48-bit timestamp in milliseconds, a 12-bit shard ID, a 62-bit sequence counter for the same shard, or any other arrangement you design.

Structure

RFC 9562 reserves only the version and variant bits. The rest is yours.

FieldBitsContents
custom_a48Application-defined (often a timestamp)
version4Fixed value 8
custom_b12Application-defined
variant2Fixed value 10 (RFC 4122 variant)
custom_c62Application-defined (often random or a sequence)

When to use v8

Time-ordered IDs with more flexibility than v7. v7 gives you 48-bit millisecond timestamp + 74 random bits. v8 lets you decide how many random bits versus sequence bits you want.

Embedding a shard or region. Put 12 bits of shard ID in custom_b so any UUID tells you which database it belongs to.

Deterministic IDs. If your input has a natural 48-bit or 62-bit identifier, v8 lets you pack it into a valid UUID without inventing a hash.

Vendor-specific payloads. Some protocols define their own UUID layout and mark it as v8.

How to generate

Enter a 48-bit value for the first block (12 hex characters) or leave it empty for random. Enter a 12-bit value for the second block (3 hex characters) or leave it empty. The remaining 62 bits are filled from either a random source, or from a value you paste in the third field (16 hex characters, of which the top 2 bits are overwritten by the variant).

To generate several at once, increase the count.

FAQ

What should I put in the custom fields?

Whatever your system needs. Common choices: (1) a Unix millisecond timestamp in custom_a, (2) an organization or shard ID in custom_b, (3) a random 62-bit nonce in custom_c. Document your layout ..." v8 means nothing without a specification.

Is UUID v8 sortable?

Only if you design it that way. If you put a big-endian timestamp in the first 48 bits (like v7), then yes ..." v8 UUIDs sort lexicographically by time. If your custom fields are random, the UUIDs are not sortable.

Does UUID v8 replace v7?

No. v7 is a fixed, well-specified format for time-ordered IDs. v8 is a container for anything else. Use v7 when it fits; use v8 only when you need a different layout.

Will databases accept UUID v8?

PostgreSQL, MySQL 8.0+, SQL Server, Oracle, and modern libraries that follow RFC 9562 all accept v8 as a valid UUID. Older libraries that hard-coded version numbers may treat it as invalid ..." test before committing.

What does the RFC actually say?

RFC 9562 section 5.8: "The version 8 UUID is reserved for custom UUID formats specified by the implementer... It is not intended for use by applications that do not have a specific need for custom UUIDs." That last sentence is the key ..." v8 is a last resort, not a default.

Command line equivalent
# Python uuid (as of 3.12) does not include v8 generation
python3 -c 'import uuid; print(uuid.uuid4())'   # no v8 in stdlib

# Most languages: build it by hand from 16 bytes
# Then set the version nibble to 8 and the variant to 10xx
# This tool does that for you.

# Rust uuid crate supports v8:
# uuid::Uuid::new_v8(bytes)
Loads a test value into the form
Output