The 30-second summary

UUID v7 packs a millisecond timestamp into the high bits of a 128-bit ID and fills the rest with CSPRNG bytes. The result sorts chronologically, plays nice with B-tree indexes, and is the modern default for primary keys.

Provable.io is not an ID generator. It produces verifiable random outcomes — values whose generation can be proven after the fact. Different job, different shape.

Feature matrix

CapabilityProvable.ioUUID v7
PurposeVerifiable random outcomesSortable, time-ordered unique IDs
Time-orderableNo (cursor + nonce, but not wall-clock)Yes — high bits are a ms timestamp
Cryptographic strengthHMAC-SHA256OS CSPRNG for the random bits
Third-party verifiability of the valueYesNo
Reproducible from seedYesNo
Pre-commitmentYesNo
Latency~tens of ms (network)Sub-microsecond (in-process)
Best forPublic-audience drawsDB primary keys that need to sort by creation time

When UUID v7 is the right answer

UUID v7 is the modern default for primary keys; use it when:

When Provable.io is the right answer

UUID v7 generates an ID. It doesn't generate a verifiable decision. Use Provable.io when:

Try it now

16 verifiable bytes — you could format them as a UUID, but the point is that the bytes themselves are now provable.

curl "https://api.provable.io/api/bytes?clientSeed=vs-uuid-v7-demo&count=16&encoding=hex"

FAQ

Can I make verifiable UUID v7s?

You can prefix the timestamp and use Provable.io bytes for the random tail. The result is sortable and verifiable, at the cost of an HTTP call per ID — only worth it when verification matters.

Does Provable.io guarantee uniqueness?

It guarantees verifiability, not uniqueness. With a 128-bit output the collision probability is negligible in practice, but for primary keys use a real ID generator.

What about ULID, KSUID, Snowflake?

Same family as UUID v7 — sortable IDs from a local CSPRNG plus a clock. Same rule of thumb: ID generator, not verifier.

Next steps