Zod Validation in Hono

From the Hono cheat sheet · Validation · verified Jul 2026

Zod Validation

Type-safe validation with Zod schemas

typescript
import { zValidator } from '@hono/zod-validator'
import { z } from 'zod'

// JSON body validation
const createUserSchema = z.object({
  name: z.string().min(1).max(100),
  email: z.string().email(),
  age: z.number().min(18).optional(),
})

app.post('/users',
  zValidator('json', createUserSchema),
  (c) => {
    const { name, email, age } = c.req.valid('json')
    return c.json({ name, email, age }, 201)
  }
)

// Query params validation
const searchSchema = z.object({
  q: z.string(),
  page: z.coerce.number().positive().default(1),
  limit: z.coerce.number().max(100).default(10),
})

app.get('/search',
  zValidator('query', searchSchema),
  (c) => {
    const { q, page, limit } = c.req.valid('query')
    return c.json({ q, page, limit })
  }
)
💡 Install: npm install @hono/zod-validator zod
⚡ Targets: json, query, param, header, form, cookie
📌 Use z.coerce for automatic type conversion
🎯 c.req.valid("target") returns typed validated data

More Hono tasks

Back to the full Hono cheat sheet