io-ts is a TypeScript runtime validation library that provides a composable codec system for decoding and encoding data at the boundaries of an application. It defines data schemas using structural types, where the shape of data determines its validity rather than nominal names, and produces runtime type guards from those definitions for efficient validation checks.
The library is built around bidirectional codec mappings that combine decoding, encoding, and type checking into single reusable units. It supports a composable decoder pipeline where small validation steps can be chained together, and includes an error accumulation strategy that collects multiple validation errors into a single result rather than failing on the first mistake. Additionally, io-ts provides a structural comparison utility that compares values by their shape rather than reference identity.
The project covers data validation and parsing, including decoding external input into typed structures, encoding internal data back to JSON-compatible shapes, and validating data at runtime against declared schemas. It also supports schema-driven data safety across system boundaries and structural comparison for testing or data processing.