Safely infer types and round-trip YAML
This tutorial uses a real, small sample. Open /app/?lang=en&tool=json-to-typescript and paste:
{"id":9007199254740993,"name":"Ada","active":true,"deleted":null,"empty":{},"tags":["a",2,null,{"x":false}],"__proto__":{"polluted":true}}The defaults are root name Root, interface style and an export keyword. The result contains nested interfaces such as RootTagsItem; tags becomes Array<string | number | null | RootTagsItem>, empty becomes Record<string, never>, and "__proto__" is quoted as an ordinary field. Because id exceeds the safe-integer range, a precision warning is surfaced instead of a silent conversion.
Switch to json-to-schema for draft 2020-12 properties/items/required, with items.anyOf for the mixed array; choosing draft-07 changes only the $schema URI. Switch to json-yaml and JSON→YAML for id: 9007199254740993, deleted: null and empty: {}; pasting that output back with YAML→JSON yields semantically equal JSON.
Safety boundary: inputs above 1 MiB, nesting above 64 levels, or the presence of &anchor, *alias, <<, !!binary or | block scalars are rejected with line and column. The error appears below the fields and the original input is preserved. There are zero upload calls; the tools keep working offline.