OSS TanbouSign in with GitHub

combine small functions for runtime schema validation with TypeScript type inference

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
9,027
Primary language
TypeScript
License
MIT
Repository last updated
Oct 3, 2026
On this page

Overview

Valibot is a runtime schema-validation library built from small composable schema, validation, and transformation functions. Schemas created with functions such as object and pipe can validate unknown data through parse or safeParse while also inferring TypeScript input and output types.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Key features

Build schemas from small object, pipe, and validation functions

Independent functions such as object, string, email, and minLength are composed into schemas. The API favors small imports with single responsibilities instead of a few large method-heavy objects.

Sources: [1]

Choose parse, safeParse, or is for different error-handling needs

parse throws for invalid input, safeParse returns a result without exceptions, and is can act as a type guard, giving forms and API boundaries different validation entry points.

Sources: [1]

Infer TypeScript input and output types from schemas

Schemas execute at runtime and can also expose TypeScript types through helpers such as InferOutput, reducing duplication between runtime validation and static typing.

Sources: [1]

Best fit

Fits frontends that want runtime validation with a tree-shakeable bundle

The small-function design is intended to let bundlers remove unused functionality, which suits browser applications that validate forms, API responses, or configuration while controlling bundle size.

Sources: [1][2]

Before adoption

v1.5.0 targets TypeScript 5+ and ES2020-capable tooling

Package metadata declares TypeScript >=5 as an optional peer. The official installation guide states a minimum TypeScript version of 5.0.2, recommends strict mode, and notes that distributed files target ES2020.

Sources: [3][2]

v1.5.0 includes validation and object-safety fixes worth regression testing

The v1.5.0 changelog includes fixes around Object.prototype key collisions, inherited properties during intersection, and email and ULID validation. Pin versions and run representative validation tests when upgrading.

Sources: [4]

Official sources

  1. [1]Valibot v1.5.0 README(2026-10-05)
  2. [2]Valibot v1.5.0 installation guide(2026-10-05)
  3. [3]Valibot v1.5.0 package metadata(2026-10-05)
  4. [4]Valibot v1.5.0 changelog(2026-10-05)
  5. [5]Valibot MIT license(2026-10-05)
Supplemental curator note

The GitHub repository has moved from fabian-hiller/valibot to open-circle/valibot. Its numeric repository ID is unchanged, so this entry treats it as the same project and points users to the current canonical repository.

Try it in 3 steps

  1. 1

    Install Valibot 1.5.0 in an isolated project

    Follow the official npm installation flow and pin the reviewed version in a temporary project.

    demo=$(mktemp -d "${TMPDIR:-/tmp}/valibot.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact valibot@1.5.0
  2. 2

    Build a login schema with object and pipe

    Use the same object-and-pipe pattern shown in the README and validate input with the non-throwing safeParse API.

    printf "%s\n" "import * as v from 'valibot';" "const LoginSchema = v.object({email: v.pipe(v.string(), v.email()), password: v.pipe(v.string(), v.minLength(8))});" "const result = v.safeParse(LoginSchema, {email: 'ada@example.com', password: '12345678'});" "if (!result.success) { console.error(result.issues); process.exit(1); }" "console.log(result.output);" > demo.mjs
  3. 3

    Run the validation with Node.js

    Execute the schema and confirm that safeParse returns the validated output.

    node demo.mjs
Check the official README

Growth

Growth trends · Last 30 days

9,027 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
28
Open PRs
118

Development activity is still being collected.

Built with

Categories and tags

Categories

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • bundle-size
  • modular
  • parsing
  • schema
  • type-safe
  • typescript
  • validation
  • runtime
  • form-validation
  • runtime-validation
  • schema-validation
  • standard-schema
Stars
9,027
Forks
391
Watchers
24
Open issues
94
Contributors
206
Owner type
Organization
Primary language
TypeScript
License
MIT
Repository last updated
Oct 3, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?