What it does
The JSON → TypeScript tool reads any valid JSON and infers clean, typed TypeScript interfaces from it - no hand-writing types ever again. It handles nested objects (each gets a named sub-interface), arrays (T[]), heterogeneous arrays (merged into unions or a true union, your choice), primitive values, and null. Identical nested shapes are deduplicated into one shared interface, and keys that collide with TypeScript reserved words are auto-quoted. Everything runs 100% in your browser, so it’s safe to paste real, sensitive payloads.
How to use it
- Paste your JSON into the JSON input box (or hit Sample for a demo).
- Optionally set a Root name (defaults to
Root, sanitized to a valid identifier). - Pick Union array elements: Merge (default - objects merge keys, distinct primitives union) or Union (emit a true union of distinct element types).
- Toggle Nullable → optional to mark properties whose type includes
nullas optional. - The interfaces render live on the right, pinned while you scroll the input.
- Copy the TypeScript, Download it as
types.ts, or Copy share link to reproduce the exact view.
Examples
Infer an interface from a nested object
Input:
{ "id": 7, "name": "CosmoDev", "tags": ["json", "ts"], "meta": { "version": 2 } }
Output:
interface Root {
id: number;
name: string;
tags: string[];
meta: RootMeta;
}
interface RootMeta {
version: number;
}
Heterogeneous arrays merge into a union element
Input: { "xs": [1, "a"] } → property xs: (number | string)[].
Reserved-word keys are quoted
Input: { "class": "x", "default": 1 } → "class": string; "default": number;.
Good to know
- Shareable: your input and options are encoded in the URL, so a link reproduces the exact output.
- Private: all inference happens locally - safe for secrets and credentials.
- Related tools: JSON Formatter, JSON Validator,
Base64Base64An encoding representing binary data as 64 safe ASCII characters, so it survives transport through text-only channels. It encodes — it does not encrypt.
.