SkillAgentSearch skills...

Decoders

Elegant validation library for type-safe input data for TypeScript

Install / Use

/learn @nvie/Decoders
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<img alt="Decoders logo" src="./assets/logo@2x.png" style="width: 100%; max-width: 830px; max-height: 248px" width="830" /><br />

npm Test Status Bundle size

Elegant and battle-tested validation library for type-safe input data for TypeScript.

Basic example

import { array, isoDate, number, object, optional, string } from 'decoders';

// Incoming data at runtime, e.g. the request body
// The point is that this data is untrusted and its type unknown
const externalData = {
  id: 123,
  name: 'Alison Roberts',
  createdAt: '2026-01-11T12:26:37.024Z',
  tags: ['foo', 'bar'],
};

// Write the decoder (= what you expect the data to look like)
const userDecoder = object({
  id: number,
  name: string,
  createdAt: optional(isoDate),
  tags: array(string),
});

// Call .verify() on the incoming data
const user = userDecoder.verify(externalData);
//    ^^^^
//    TypeScript will infer this type as:
//    {
//      id: number;
//      name: string;
//      createdAt?: Date;
//      tags: string[];
//    }

Installation

npm install decoders

Requirements

You must set strict: true in your tsconfig.json in order for type inference to work correctly!

// tsconfig.json
{
  "compilerOptions": {
    "strict": true
  }
}

Documentation

Documentation can be found on decoders.cc.

There is a dedicated page that explains how to build your own decoders.

Related Skills

View on GitHub
GitHub Stars437
CategoryDevelopment
Updated2d ago
Forks29

Languages

TypeScript

Security Score

100/100

Audited on Mar 24, 2026

No findings