v3.0now 3.03× faster — drop-in

Validate everything.
At lightning speed.

VLD is a zero-dependency TypeScript schema validator — the drop-in Zod replacement that parses millions of ops/sec, speaks 27+ languages, and ships a Result pattern your control flow will love.

Try it live
0.00×
faster than Zod 4
0
runtime dependencies
0+
error languages
0
tests · 100% cov.
vld — live — zshrunning
$
3.03× fasterzero dependenciesdrop-in zod27+ languagesresult patternplugin systemtree-shakeable minicodecs built-in3,116 tests10/10 benchmark wins3.03× fasterzero dependenciesdrop-in zod27+ languagesresult patternplugin systemtree-shakeable minicodecs built-in3,116 tests10/10 benchmark wins
live playground

Don't take our word for it. Break it.

This page embeds the actual @oxog/vld library, running in your browser right now. Edit the JSON, switch the error language, watch it validate on every keystroke.

input.json123 chars
● editable — go ahead
result
booting validator…
benchmarks

Numbers don't flinch. Neither do we.

Every commit runs the benchmark suite in CI with Zod performance floors — regressions fail the build. These are the numbers from the latest run.

string parse
M ops/s
vld
0
zod
0
3.02× throughput
nullish parse
M ops/s
vld
0
zod
0
4.76× throughput
object parse
M ops/s
vld
0.0
zod
0.0
3.02× throughput
array of objects
M ops/s
vld
0.0
zod
0.0
3.25× throughput
Memory consumption — 4.7× less than Zod on identical workloads
−0%

node 24 · relative throughput per op-class · run it yourself: npx @oxog/vld bench

3,116
tests · 100% coverage
10 / 10
benchmark categories won
2500+
assertions in CI on every commit
3.03× fasterzero dependenciesdrop-in zod27+ languagesresult patternplugin systemtree-shakeable minicodecs built-in3,116 tests10/10 benchmark wins3.03× fasterzero dependenciesdrop-in zod27+ languagesresult patternplugin systemtree-shakeable minicodecs built-in3,116 tests10/10 benchmark wins
arsenal

A tiny library with an unfair arsenal.

Everything you'd expect from a modern validator — and a few things you wouldn't. All of it in a package with zero runtime dependencies.

Drop-in Zod replacement

Keep your schemas. Keep your types. Swap one import path and watch your benchmarks rewrite themselves — Zod 4 subpath parity included.

import { z } from "zod";
import { z }from"@oxog/vld/v4";
// that's the whole migration
28/28 Zod 4.5 parity tests passing

Result pattern, built-in

Ok / Err / tryCatch / match — no thrown exceptions in your hot path.

const r = User.safeParse(req.body);
if (r.ok) {
return json({ user: r.data })
} → Ok<User> | Err<VldError>
0

runtime dependencies

Pure TypeScript. Nothing to audit, nothing to break your lockfile.

27+

languages, lazy-loaded

Validation

error messages your users actually read

Static type inference

v.infer<typeof S> — your schema is your type. One source of truth.

Tree-shakeable mini API

Bundle-constrained? Import only what you parse. The rest never ships.

Plugin system

Extend schemas with your own kernels, formats and transforms — first-class hooks.

Bidirectional codecs

JSON, base64, hex — parse, encode and decode with the same fluent chains.

migration

The shortest migration you'll ever ship.

No rewrites. No new mental model. One line changed, one benchmark to brag about.

your-file.ts — 1 line changeddiff
−import { z } from "zod";
+import { z } from "@oxog/vld/v4";
01

Swap the import

Point zod at @oxog/vld/v4. Schemas, types and errors keep working — 28/28 parity tests say so.

02

Run your suite

Existing tests stay green. Benchmarks get 3× headroom on the same hardware.

03

Delete a dependency

Drop zod from package.json. Your node_modules just lost weight — 0 runtime deps left behind.

$ npm install @oxog/vld
ship faster today

Your schemas deserve jet fuel.

One install. One import. 3× the speed. The rest of your app won't even notice — your users will.

Star on GitHub
MIT license·zero deps·27+ languages·ESM + CJS