Inference rulesNested objects split into separate types; arrays are typed automatically; optional/nullable fields detected; mixed types form unions; null / empty arrays fall back to sane types; identical shapes are deduped and name clashes disambiguated.Runs locally — no fixed size limit (bounded by browser memory)
Sample JSONJSON
Paste or type JSON
GeneratedElm
Paste or type JSON
JSON → type alias · Local · No upload

JSON to Elm Type Alias Generator

Sample JSON → type alias · Maybe · List · Nested records

🔒Processed locally in your browser — never uploaded or stored

No upload, no storage

JSON is processed in memory and never sent to a server.

Share via URL fragment

Share links encode data in the # anchor — never sent to a server.

Remember last edit

Optionally keep your last input locally; clear it with one click.

Generate Elm Type Aliases from JSON|Maybe for Optional Fields|Correct Parentheses for Nested Types|Runs Locally

Generate Type Aliases

Nested objects split into separate record types, laid out the way elm-format would.

Maybe for Optional Fields

Missing and nullable fields are wrapped in Maybe, matching Elm's no-null design.

Parentheses Placed Correctly

Elm applies types by juxtaposition, so nested types get their parentheses added automatically — no ambiguous signatures.

Keywords Renamed

Keys colliding with Elm keywords like type or port are renamed, with the original key kept in a comment.

Runs Locally — No Upload

Generation runs in your browser; data is never uploaded.