Free · No signup · Runs in your browser

Generate a schema from your CSV.

Drop a CSV and get a typed schema in the dialect you want — TypeScript, Zod, Pydantic, Go or JSON Schema. We infer types and nullability from the data so you can paste it straight into your codebase.

01 · How it works

Three steps, then done.

Stop hand-typing interfaces from a sample file. This reads your CSV, infers each column's type (number vs integer, boolean, date, string) and whether it's nullable, and emits a ready-to-paste schema.

i. drop

Drop your CSV

Delimiters and types are detected automatically. Excel files convert on the fly.

ii. pick

Pick a target

TypeScript interface, Zod schema, Pydantic model, Go struct, or JSON Schema — switch instantly.

iii. paste

Copy into your code

Field names are sanitized to valid identifiers; nullable columns become optional. Copy and go.

02 · Why ours

Types that match your actual data.

Inferred from real rows, not guessed from a header — so the schema reflects what's truly in the file.

  • 01

    Smart type inference

    Integers vs floats, booleans, ISO dates and strings are distinguished from the data, not assumed.

  • 02

    Nullability detected

    Columns with blank cells become optional / nullable in every dialect.

  • 03

    Five dialects

    TypeScript, Zod, Pydantic, Go and JSON Schema from the same inference pass.

  • 04

    Local-first

    Your data is parsed in the browser. Nothing is uploaded — verify in DevTools → Network.

"I pasted a CSV and had a Zod schema in my project ten seconds later."
— a TypeScript dev
03 · FAQ

schema generator questions.

Which schema dialects are supported?
TypeScript interfaces, Zod schemas, Pydantic models, Go structs, and JSON Schema (draft-07). Pick from the Target dropdown above the output.
From the actual values: all-integer numeric columns become int, mixed numerics become float/number, true/false columns become boolean, ISO/date-like columns become dates, everything else is a string.
If a column has any empty cells it's marked optional (TypeScript ?), nullable (Zod), Optional[...] (Pydantic), a pointer (Go) or ["type","null"] + omitted from required (JSON Schema).
Yes — names are converted to valid identifiers for each language (and quoted where the language allows, e.g. TypeScript keys with spaces).
No. Everything runs locally in your browser.