Performance Benchmarks
Real-world performance metrics and bundle size comparisons for TypeScript validation libraries
 Bundle Size 
 19-23KB
 Speed (Simple) 
 695K ops/sec
 CSP Safe 
 ✓ Always
Key Insights
-  • AJV's speed comes at a cost: Uses 
new Function()which fails in CSP-restricted environments - • AJV Standalone limitations: Requires build-time compilation, can't adapt to dynamic schemas
 - • Luq's balance: Works everywhere, reasonable performance, dynamic validation support
 
Bundle Size Comparison (gzipped)
| Library | Simple Schema | Complex Schema | Notes | 
|---|---|---|---|
| AJV Standalone | 1.03 KB | 4.63 KB | Pre-compiled validation | 
| Valibot | 1.31 KB | 2.49 KB | Modular design | 
| Yup | 12.80 KB | 13.40 KB | Simple API | 
| Luq | 19.10 KB | 22.48 KB | Tree-shakeable plugins | 
| Luq (JsonSchema) | 26.06 KB | 29.08 KB | JSON Schema with individual plugins | 
| Luq (JsonSchema Full) | 31.75 KB | 32.31 KB | All JSON Schema features | 
| AJV | 37.78 KB | 38.33 KB | Full JSON Schema | 
| Joi | 44.44 KB | 45.00 KB | Server-focused | 
| Zod | 47.45 KB | 48.12 KB | Feature-rich | 
Performance - Simple Schema
 AJV Standalone 
  CSP ✓ Static only 
  3,176,536 ops/sec (457.3x) 
  AJV 
  CSP ✗ Dynamic ✓ 
  2,640,781 ops/sec (380.1x) 
  Luq (JsonSchema) 
  CSP ✓ Dynamic ✓ 
  1,498,347 ops/sec (215.7x) 
  Luq (JsonSchema Full) 
  CSP ✓ Dynamic ✓ 
  1,403,639 ops/sec (202.1x) 
  Valibot 
  CSP ✓ Dynamic ✓ 
  1,016,119 ops/sec (146.3x) 
  Luq 
  CSP ✓ Dynamic ✓ 
  694,692 ops/sec (100x) 
  Zod 
  CSP ✓ Dynamic ✓ 
  623,385 ops/sec (89.7x) 
  Joi 
  CSP ✓ Dynamic ✓ 
  171,594 ops/sec (24.7x) 
  Yup 
  CSP ✓ Dynamic ✓ 
  135,276 ops/sec (19.5x) 
 Performance - Complex Schema
 AJV 
  CSP ✗ Dynamic ✓ 
  215,535 ops/sec (599.6x) 
  AJV Standalone 
  CSP ✓ Static only 
  192,183 ops/sec (534.6x) 
  Valibot 
  CSP ✓ Dynamic ✓ 
  170,637 ops/sec (474.7x) 
  Zod 
  CSP ✓ Dynamic ✓ 
  66,448 ops/sec (184.9x) 
  Luq 
  CSP ✓ Dynamic ✓ 
  35,946 ops/sec (100x) 
  Luq (JsonSchema Full) 
  CSP ✓ Dynamic ✓ 
  25,605 ops/sec (71.2x) 
  Luq (JsonSchema) 
  CSP ✓ Dynamic ✓ 
  24,119 ops/sec (67.1x) 
  Joi 
  CSP ✓ Dynamic ✓ 
  23,324 ops/sec (64.9x) 
  Yup 
  CSP ✓ Dynamic ✓ 
  6,419 ops/sec (17.9x) 
 Which Library Should You Choose?
Choose Luq if you need:
- ✓ CSP-restricted environments (no eval/Function)
 - ✓ Dynamic schema loading from API/CMS
 - ✓ Existing TypeScript types (no rewriting)
 - ✓ Custom business rules as plugins
 - ✓ JSON Schema migration path
 
Consider alternatives if:
- Minimal bundle critical: Valibot (1-2KB)
 - Pre-compiled validation only: AJV Standalone
 - Maximum raw speed, no CSP: AJV
 - Rich ecosystem needed: Zod
 
Test Methodology
- Test Environment
 -  
- • AMD Ryzen 7 5825U
 - • 5.8GB RAM
 - • Node.js v22.12.0
 - • Measured: 2025-08-14
 
 - Test Data
 -  
- • Simple: 3 fields (name, age, email)
 - • Complex: Nested objects, arrays, conditionals
 - • Iterations: 1,000,000 operations per benchmark
 - • Source: 
bundle-size-comparison/