Skip to content

Results

Detailed ops/sec from Benchmark.js (~1M iterations per test). All use valid data with common chains (e.g., .min(5).email() for strings).

Primitives

SchemaTypyn (ops/sec)±%SamplesZod (ops/sec)±%SamplesWinner
String7,675,4360.55649,55072,95425.164,513Typyn (105x)
Number9,940,3520.401,161,0478,618,1160.34786,777Typyn (1.15x)
Boolean10,517,9910.821,245,1908,093,04816.61643,052Typyn (1.3x)
Literal10,714,8290.361,300,0409,599,42755.47596,554Typyn (1.12x)
Enum10,780,6810.661,315,4129,851,78519.65911,367Typyn (1.09x)

Composites

SchemaTypyn (ops/sec)±%SamplesZod (ops/sec)±%SamplesWinner
Object4,228,0950.20402,0908,539,13027.76601,501Zod (2x)
Array2,650,7351.08239,3073,923,61917.27301,541Zod (1.48x)
Map3,477,9641.51321,4662,346,34216.85183,657Typyn (1.48x)
Set4,562,8300.91430,2403,324,0364.07310,401Typyn (1.37x)

Advanced

SchemaTypyn (ops/sec)±%SamplesZod (ops/sec)±%SamplesWinner
Date10,087,7870.721,110,3869,960,3960.201,060,446Typyn (1.01x)
IP5,158,9550.64496,536N/A--Typyn
UUID4,909,9980.77472,6992,848,0511.15254,170Typyn (1.72x)

Back to Overview | Methodology →


Last updated: October 23, 2025.

MIT Licensed | Copyright © 2025 ManojKumar2920