LogoLogo

Schema Benchmarks

    • home
      Home

    • download_2
      Download

    • timer
      Initialization
    • check_circle
      Validation
    • output_circle
      Parsing
    • swap_horiz
      Codec
    • schema
      Standard Schema
    • format_quote
      String

    • error
      Stack

    • deployed_code
      Libraries

    • article
      Blog
Expand sidebarExpand sidebar
Benchmarks/Standard SchemaStandard Schema
github
GitHubGitHub
DiscordDiscord
PreferencesPreferences

Many libraries implement the Standard Schema interface, which allows many other libraries to accept them without needing to specialise for each library.

Copy to clipboardCopy to clipboard
import { personSchema } from "./schemas"; const person = await upfetch(url, { schema: personSchema });

We benchmark the time taken to parse using a standard schema.

infoInfo

Some libraries require an adapter before they can be used as a standard schema. The time to convert the schema is not measured, only the time to parse using it.

Data
errorInvalidcheck_circleValid
Optimizations
flash_offNonecodeJITbuildPrecompiled
Abort early
errorAll errorswarningAbort early
LibrarysortVersionDownloads (/wk)sortOptimizationsError typeMeanarrow_upwardCompare
@paseri/compiler
Code snippetCode snippet
upfetch(url, { schema })
0.7.539PrecompiledAll errors3 μs
joi
Code snippetCode snippet
upfetch(url, { schema })
18.2.316.86MNoneAll errors5 μs
1.33x
stat_minus_1
effect
Code snippetCode snippet
// const standardSchema = Schema.standardSchemaV1(
//   schema, 
//   { errors: "first" }
// );
upfetch(url, { schema: standardSchema });

(Commented code is not benchmarked)

3.21.416.97MNoneAbort early5 μs
1.56x
stat_minus_1
@paseri/paseri
Code snippetCode snippet
upfetch(url, { schema })
1.9.556NoneAll errors6 μs
1.69x
stat_minus_1
sury
Code snippetCode snippet
upfetch(url, { schema })
11.0.0-alpha.9207.16KJITAll errors8 μs
2.19x
stat_minus_1
typia
Code snippetCode snippet
// const validate = typia.createValidate<TypiaSchema>();
upfetch(url, { schema: validate })

(Commented code is not benchmarked)

13.0.2298.11KPrecompiledAll errors10 μs
2.99x
stat_minus_1
valibot
Code snippetCode snippet
upfetch(url, { schema })
1.4.213.57MNoneAll errors28 μs
8.01x
stat_minus_1
effect@beta
Code snippetCode snippet
// const standardSchema = Schema.toStandardSchemaV1(
//   schema, 
//   { parseOptions: { errors: "first" } }
// );
upfetch(url, { schema: standardSchema });

(Commented code is not benchmarked)

4.0.0-beta.9716.97MNoneAbort early29 μs
8.43x
stat_minus_1
effect@beta
Code snippetCode snippet
// const standardSchema = Schema.toStandardSchemaV1(
//   schema, 
//   { parseOptions: { errors: "all" } }
// );
upfetch(url, { schema: standardSchema });

(Commented code is not benchmarked)

4.0.0-beta.9716.97MNoneAll errors30 μs
8.49x
stat_minus_1
@railway-ts/pipelines
Code snippetCode snippet
upfetch(url, { schema })
0.1.2924NoneAll errors30 μs
8.52x
stat_minus_1
zod/v3
Code snippetCode snippet
upfetch(url, { schema })
4.4.3208.07MNoneAll errors33 μs
9.43x
stat_minus_1
ata-validator
Code snippetCode snippet
upfetch(url, { schema })
0.21.0443JITAll errors42 μs
12.03x
stat_minus_1
zod
Code snippetCode snippet
upfetch(url, { schema })
4.4.3208.07MJITAll errors54 μs
15.54x
stat_minus_1
zod/mini
Code snippetCode snippet
upfetch(url, { schema })
4.4.3208.07MJITAll errors57 μs
16.26x
stat_minus_1
effect
Code snippetCode snippet
// const standardSchema = Schema.standardSchemaV1(
//   schema, 
//   { errors: "all" }
// );
upfetch(url, { schema: standardSchema });

(Commented code is not benchmarked)

3.21.416.97MNoneAll errors70 μs
19.97x
stat_minus_1
decoders
Code snippetCode snippet
upfetch(url, { schema })
2.9.353.18KNoneAll errors75 μs
21.54x
stat_minus_1
arktype
Code snippetCode snippet
upfetch(url, { schema })
2.2.31.15MJITAll errors90 μs
25.75x
stat_minus_1
yup
Code snippetCode snippet
upfetch(url, { schema })
1.7.19.42MNoneAll errors492 μs
140.52x
stat_minus_3
Created by eskimojo for Open Circle

Preferences

Style
Theme
NPM browser