JSON to Zod Schema
Infer a runtime-checkable Zod schema from a JSON example.
Paste JSON on the left.
How it works
A TypeScript type is checked by the compiler and erased by the time your code runs — it cannot stop a malformed
response from reaching your handler. A Zod schema is the runtime half of the same shape: call
.parse() on it and a response that does not match throws, instead of a wrong value quietly
propagating three functions deep before something breaks.
Targets the Zod 3 chain API
Output uses z.object(), z.array() and chained modifiers such as
.optional() — the API in every current published example. If your project pins an older Zod version,
check the chain methods it exposes before assuming this output compiles unchanged.
Shape, not constraints
The inferred schema checks that a field is a string, not that it is an email or under 200 characters. A single example cannot tell this tool a string field is always an ISO date — that is a constraint you add by hand once you know it, the same way it would be if you wrote the schema from scratch.
Example
{"id":1,"tags":["a","b"]} produces
z.object({ id: z.number(), tags: z.array(z.string()) }). A field seen as both a string and a
number across an array's items comes out as z.union([z.string(), z.number()]), naming the real shape
rather than picking one arbitrarily.
Frequently asked questions
Why generate a schema instead of just a type?
A TypeScript type is erased by the time your code runs, so it cannot stop a malformed response from reaching a handler. A Zod schema is the runtime half of the same shape — call .parse() on it and a response that does not match throws immediately, instead of a wrong value quietly propagating.
What Zod version does the output target?
The Zod 3 chain API — z.object(), z.array() and chained modifiers like .optional() — which is what every current published example uses. Check your project’s pinned version if it predates that API.
What does a mixed-type field produce?
z.union([...]) naming every type actually seen for that field across the array, rather than picking one arbitrarily and hiding the rest.
Related tools
JSON to TypeScript
Infer a TypeScript interface from a JSON example, with optional fields worked out from an array.
LocalJSON to JSON Schema
Infer a JSON Schema (2020-12) document from a JSON example.
LocalJSON Formatter & Validator
Format, validate and measure JSON, with errors located by line and column.
LocalCSV ⇄ JSON Converter
Convert CSV to a JSON array of objects, or back, with proper quoted-field parsing.
LocalJSONL Formatter & Validator
Validate JSON Lines file by line and convert it to a single JSON array.
LocalEnv File Converter
Convert between .env, JSON and YAML — the same config in three syntaxes.
Local