---
title: "Validate incoming data"
description: "Check forms, API payloads, and configuration against explicit schemas."
pagination: false
---

{/* Generated from content/. Edit the catalog, not this page. */}

<PurposeNote title="Start with the tradeoff">Runtime validation checks external values; TypeScript types alone do not validate data at runtime.</PurposeNote>

## Options for this task

<LibraryIndex category="validation" />

<LibraryCard libraryId="arktype" />

<LibraryCard libraryId="io-ts" />

<LibraryCard libraryId="joi" />

<LibraryCard libraryId="superstruct" />

<LibraryCard libraryId="t3-env" />

<LibraryCard libraryId="yup" />

<LibraryCard libraryId="zod" />

## Before you decide

Try a small, realistic example. Check the runtime, accessibility, maintenance, and license requirements for the features you need.

[Browse runtime validation →](/validation)

[Explore more tasks →](/tasks)
