- Idiomatic and small TypeScript API
- Bidirectional decoding/encoding
- No external dependencies
- Good performance
- Lightweight, should tree-shake well
- Introspection for things like test data or OpenAPI generation
- Both machine and human-readable errors
- Good documentation