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
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.
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]Valibot v1.5.0 README(2026-10-05)
- [2]Valibot v1.5.0 installation guide(2026-10-05)
- [3]Valibot v1.5.0 package metadata(2026-10-05)
- [4]Valibot v1.5.0 changelog(2026-10-05)
- [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
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
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
Run the validation with Node.js
Execute the schema and confirm that safeParse returns the validated output.
node demo.mjs
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
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Runtypes2,699 Stars
4 shared tag(s) · 1 shared category(s) · Same language
validate unknown values with composable runtime types and infer TypeScript types from the same definitions
TypeScript - Ky17,104 Stars
4 shared tag(s) · Same language
extend Fetch API with concise retries, timeouts, hooks, and JSON handling
TypeScript - ofetch5,360 Stars
4 shared tag(s) · Same language
add JSON parsing, retries, timeouts, and interceptors to fetch across Node, browsers, and workers
TypeScript - Storybook91,200 Stars
3 shared tag(s) · 1 shared category(s) · Same language
capture UI states once and reuse them across docs, interaction tests, and agent tooling
TypeScript - Expo52,566 Stars
3 shared tag(s) · 1 shared category(s) · Same language
build React Native apps for Android, iOS, and web from one project model
TypeScript - PostCSS28,974 Stars
3 shared tag(s) · 1 shared category(s) · Same language
parse CSS into an AST and compose build-time style processing with JavaScript plugins
TypeScript
Report incorrect information
Tell us if any listing information is incorrect or outdated.