joi vs superstruct
joi is downloaded 4.1× more often than superstruct (84,275,570 vs 20,701,143 per month), so it has the larger community and more answered questions online. superstruct ships 94% less gzipped JavaScript (3.4 kB vs 52.4 kB), which matters if bundle size is a priority. joi has been updated more recently, a sign of more active maintenance.
| Metric | joi | superstruct |
|---|---|---|
| Weekly downloads | 19,374,327✓ | 4,952,034 |
| Monthly downloads | 84,275,570✓ | 20,701,143 |
| GitHub stars | 21,187✓ | 7,143 |
| Minified size | 170.2 kB | 10.2 kB✓ |
| Minified + gzipped | 52.4 kB | 3.4 kB✓ |
| Dependencies | 7 | 0✓ |
| Open issues | 196 | 100✓ |
| Last commit | 2026-05-27✓ | 2024-10-01 |
| Latest version | 18.2.1 | 2.0.2 |
| License | BSD-3-Clause | MIT |
When to choose which
joi
Rich, mature validation for Node back-ends.
Choose it when: Server-side Node validation (the Hapi ecosystem) with very rich rules — when you don't need static TS types.
- + Very rich rule set
- + Mature & stable
- - No static type inference
- - Backend-oriented
superstruct
Lightweight, composable data validation.
Choose it when: Simple, composable validation with a small footprint when you don't need Zod's full feature set.
- + Small & composable
- + Type inference
- - Sync only
- - Smaller ecosystem
Feature comparison
| Feature | joi | superstruct |
|---|---|---|
| Static type inference | ✗ No | ✓ Yes |
| Async validation | ✓ Yes | ✗ No |
| Standard Schema | ✗ No | ✗ No |
| API style | Chainable | Composable functional |
| Best for | Node back-ends | Lightweight needs |
Related comparisons
Embed this comparison
A live badge for your README — it updates as the numbers change.
[](https://devcompare.dev/compare/joi-vs-superstruct)Data from npm, Bundlephobia and GitHub. Last updated 2026-06-02.