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

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/
Get Started with Luq