Show HN: TypeMorph – Browser-local JSON schema converter (80 formats, no server)

jop000042 pts0 comments

TypeMorph | TypeScript API Safety Toolkit<br>Pro features are free during beta

Feedback<br>Build Faster.<br>Model Everything.<br>User APIOrderConfig<br>Input Schema<br>"user_id": "u-9f82d1a3",<br>"email": "alex@devflow.io",<br>"status": "active",<br>"role": "admin",<br>"profile": {<br>"name": "Alex Mercer",<br>"avatar_url": "https://api.dicebear.com/svg",<br>"created_at": "2026-01-15T09:00:00Z"<br>},<br>"permissions": [<br>{ "scope": "read", "level": 1 },<br>{ "scope": "write", "level": 2 }

TypeMorph OutputTypeScriptZodRustGo

Paste JSON to begin

↑ Edit the JSON above — output updates in real time, 100% in your browser

Stop hand-writing TypeScript types from API responses. Paste JSON and instantly get Zod schemas, TypeScript interfaces, database schemas — all in your browser.

Language Outputs<br>18

Security Standard<br>Local-First

Inference Engine<br>100% Browser

How it works<br>One inference. Every language.<br>TypeMorph runs a single AST pipeline in your browser — no backend, no round-trips. Your schema is inferred once and compiled to all 18 targets simultaneously.

Input<br>"id": "uuid-…",<br>"email": "[email protected]",<br>"age": 28,<br>"role": "admin"

inferSchema( )<br>↓ Schema AST

single inference · runs in your browser

TypeScript<br>Zod<br>Go<br>Rust<br>Python<br>Java<br>Kotlin<br>Swift<br>C#<br>Dart<br>GraphQL<br>Prisma<br>Proto<br>PHP<br>JSON Schema<br>Rust struct<br>Mock JSON<br>+ Docs

Your schema never leaves your browser — not even the URL you import from (unless you opt in to the proxy)

Four Pillars of Pure Schema Engineering<br>We cut out the clutter. These four premium workbenches solve 90% of your daily structural bottlenecks.

Paste Once.<br>Compile Everywhere.<br>Drop any JSON, YAML, or OpenAPI spec and TypeMorph emits typed code for every language your team uses — simultaneously, in the browser, with no server involved. The Zod output goes beyond types: field names are analysed semantically so email fields get .email(), id fields get .uuid().<br>18 generators from one AST — TypeScript, Go, Rust, Java, Swift, Kotlin, C#…<br>Semantic field inference: enums, formats, and constraints auto-detected

Zod<br>Go<br>Rust<br>+ 15 more<br>// Zod<br>import { z } from 'zod'

export const userSchema<br>= z.object(({<br>id: z.uuid(),<br>email: z.email(),<br>age: z.int().min(0).max(150),<br>role: z.enum([<br>'admin', 'user']),<br>});// Go

type User struct {<br>ID string `json:"id"`<br>Email string `json:"email"`<br>Age int `json:"age"`<br>Role string `json:"role"`

// same input →<br>// Rust / Java / Kotlin<br>// Swift / C# / Python…

14 languages · 1 click<br>92Grade A<br>12 fields·camelCase·depth 2<br>✓ No issues found — schema looks good.

⟳ Recursive type detected<br>interface TreeNode {<br>id: number;<br>children: TreeNode[];<br>TypeScriptZodGoRustPythonJavaSwiftKotlinC#ProtoGraphQLPrisma+2

Schema Intelligence:<br>Quality Score & Recursive Types<br>Paste any JSON, OpenAPI, or JSON Schema and TypeMorph scores it instantly — any-type ratio, naming consistency, format hints, depth. Self-referential types like trees and linked lists are detected automatically and emitted as clean recursive interfaces.<br>100% local rule-based quality scoring (0–100 / A–F)<br>Auto-detects recursive types (tree, linked list, graph)

Breaking Change Detector:<br>Semantic Schema Diff<br>Paste two versions of a schema side-by-side and get a compatibility score instantly. TypeMorph detects breaking changes (type changes, optional→required, field removals), warnings (required→optional, format changes), and safe additions — across JSON, YAML, OpenAPI, and JSON Schema.<br>Compatibility score 0–100 with severity breakdown<br>Supports OpenAPI 3.x · Swagger 2.0 · JSON Schema · YAML

Breaking Change Detector<br>JSON · YAML · OpenAPI · JSON Schema

⇄ Compare ⌘↵

Version AJSON<br>{ "id": number,<br>"role": "admin"? }<br>Version BJSON<br>{ "id": string,<br>"role": "admin" }

62% compatible2 breaking1 warning1 info<br>⊗typeuser.id number → string<br>⊗requireduser.role optional → required<br>△enumuser.status "active" removed<br>+addeduser.department new field

Schema Change Impact<br>Before / After · 100% local

9 of 15 targets affected

Before<br>{ "price": 10,<br>"qty": 2 }<br>After<br>{ "price": "free",<br>"qty": 2, "sku": "A1" }

1 changed·1 impacted·1 safe<br>Itemprice: number → string<br>Orderreferences Item<br>Customerunaffected

TypeScriptZodGoRustPythonJavaSwiftC#

Schema Change Impact:<br>Know What Breaks Before It Does.<br>Paste a before and after version of your JSON. TypeMorph traces the change through every class in the type graph and shows exactly which output languages need to be regenerated — all in the browser, instantly.<br>Visual graph: changed (red) · impacted (orange) · safe (gray)<br>15 language targets checked instantly — no regeneration guesswork

Privacy Manifesto<br>100% Privacy-First Architecture<br>Your code never leaves your browser. All type inference and code generation runs entirely client-side — no API calls, no upload endpoints.

1. Local-First Engine100% Private<br>Standard code conversions (JSON to TS/Go/Rust, etc.) are executed 100% entirely inside your browser. Your schema content is never sent to any server. The only exception: if you import from a URL blocked by CORS and explicitly click “Try via...

json schema browser email typemorph role

Related Articles