This repository contains the TNID specification.
TNIDs are UUIDv8-compatible identifiers with a human-readable name field and compile-time type safety (where possible).
user.Br2flcNDfF6LYICnT
Based on UUIDv8, TNIDs maintain full UUID compatibility while adding:
- 20-bit name field for runtime and compile-time type differentiation
- Unambiguous, lexicographically sortable string representation (unlike UUID's case-insensitive hex)
- Two variants: Variant 0 (time-sortable, like UUIDv7) and Variant 1 (high-entropy, like UUIDv4)
TNIDs work anywhere a UUID is expected; all valid TNIDs are valid UUIDs.
- spec.md - Full specification
- tnid.info - Website with illustrations and examples
- tnid.info/implementations - Known implementations in various languages
- Reference Implementation - A reference implementation in Rust