playground

See a check run.

This runs t12n's actual runtime in your browser. The User type below is fixed (its schema is normally derived at build), but the data is yours to edit — change it, hit Validate, and watch the result. A mismatch gives you the same path-aware ValidationError you'd get in a real app.

The typeread-only

type User = {
  id: number
  name: string
  email: string
  role: 'admin' | 'user'
  address: { zip: string }
}
Your data
Derived schema
{ kind: 'object', properties: {
  id:      { kind: 'number' },
  name:    { kind: 'string' },
  email:   { kind: 'string' },
  role:    { kind: 'enum', values: ['admin', 'user'] },
  address: { kind: 'object', properties: { zip: { kind: 'string' } } },
} }
Console
Hit “Validate” — the result shows here (and in the browser console).