Show HN: OrderlyID – typed, time-sortable, 160-bit IDs with checksums
It's like UUID/ULID/TypeID, but with a few twists:
- Typed: every ID has a human-readable prefix (order_xxx, user_xxx).
- K-sortable: lexicographic order ≈ creation time.
- Structured fields: 160-bit body includes time, tenant, shard, sequence, random.
- Checksums: optional 4-char integrity check to catch copy/paste errors.
- Privacy flag: can bucket timestamps for public-facing IDs.
Format:
<prefix>_<payload>[-<checksum>]
Example:
order_00myngy59c0003000dfk59mg3e36j3rr-9xgg
There's a draft spec with conformance tests:
https://github.com/kpiljoong/orderlyid/blob/main/spec/0001-s...
Go reference implementation and CLI:
https://github.com/kpiljoong/orderlyid
Compared to TypeID, OrderlyID adds larger bit size (160 vs 128), tenant/shard/sequence fields, optional checksum, and a privacy bucket flag.
Status: Draft v0.1 — stable enough for experimentation. Feedback and contributions very welcome.
No comments yet