§ Type Generator · Since 2026

JSON, turned into types — legibly.

Paste an API response. Get typed interfaces that read like they were written by a person who cared. Inference is conservative by default, opinionated when asked.

I · The Converter
Input — JSON
Output — TypeScript
/** Inferred from a sample of 1 response. */
export interface Customer {
  id: string;
  object: "customer";  // literal
  balance: number;
  created: number;
  email: string;
  livemode: boolean;
  metadata: { order_id: string; };
  address: string | null;  // nullable
}

A type is an argument about what your data is.

Most JSON-to-types tools give you a wall of any disguised as structure. You paste a payload, you get back something syntactically valid and semantically empty — everything a string, every object Record<string, unknown>. It compiles. It tells you nothing.

This converter takes the opposite position. When a field named object contains the literal "customer", we infer the literal type — because Stripe’s response will always say that. When address is null in one sample but the field is present, we infer nullable, not optional. These are small arguments, stated inline as comments, reviewable at a glance.

“A type should read like a well-typeset sentence — every token doing load-bearing work, no decorative generics, no defensive unknowns.”

— the house style

The converter supports TypeScript (interface or type alias), Zod, Go struct tags, and Rust serde. The same sample yields consistent shapes across targets — naming, nullability, and narrowing decisions carry through.

More essays on typing JSON →