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
| Capability | Provable.io | UUID v7 |
|---|---|---|
| Purpose | Verifiable random outcomes | Sortable, time-ordered unique IDs |
| Time-orderable | No (cursor + nonce, but not wall-clock) | Yes — high bits are a ms timestamp |
| Cryptographic strength | HMAC-SHA256 | OS CSPRNG for the random bits |
| Third-party verifiability of the value | Yes | No |
| Reproducible from seed | Yes | No |
| Pre-commitment | Yes | No |
| Latency | ~tens of ms (network) | Sub-microsecond (in-process) |
| Best for | Public-audience draws | DB 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:
- You want index-friendly IDs that don't fragment B-trees the way UUID v4 does.
- You want creation-time sortability without storing a separate
created_atcolumn. - You're distributing ID generation across many writers and don't want a central sequence.
When Provable.io is the right answer
UUID v7 generates an ID. It doesn't generate a verifiable decision. Use Provable.io when:
- The "ID" is actually a winner pick — see raffle picker.
- The "ID" is actually a bucket assignment — see A/B bucketing.
- The "ID" is actually a card draw — see card shuffler.
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.