Skip to Content

Last Updated: 3/12/2026


Coercion

Coercion automatically converts input types before validation.

Basic Coercion

import * as z from "zod"; const CoercedNumber = z.coerce.number(); CoercedNumber.parse("42"); // => 42 (number) CoercedNumber.parse(42); // => 42 CoercedNumber.parse(true); // => 1

Coercion Types

z.coerce.string(); // Calls String(input) z.coerce.number(); // Calls Number(input) z.coerce.boolean(); // Calls Boolean(input) z.coerce.bigint(); // Calls BigInt(input) z.coerce.date(); // Calls new Date(input)

Coercion with Validation

const PositiveNumber = z.coerce.number().positive(); PositiveNumber.parse("42"); // => 42 PositiveNumber.parse("-5"); // ✗ not positive

Use Cases

Coercion is useful for:

  • Query parameters (always strings) to numbers
  • Form inputs to typed values
  • Environment variables to booleans/numbers
  • API responses with inconsistent types

Coercion vs. Transforms

  • Coercion: Built-in type conversion using JavaScript constructors
  • Transforms: Custom conversion logic you define

What’s Next

  • Transforms — Custom data conversion
  • Defining Schemas — Learn about primitive types