YAML ↔ JSON ↔ TOML ↔ .env Converter

Paste a config in any of five formats and read it back in any other — it converts as you type. The input format auto-detects, or pin it manually. Hand-written parsers, no dependencies, nothing leaves your browser.

detected: {{ fromFormat }}

Input {{ fromFormat }}

{{ num }}
Waiting for input… ✕ {{ result.error }} ✓ Valid {{ fromFormat }}
Output {{ fromFormat }} → {{ toFormat }}
Indent Key case
{{human(origSize)}}{{human(outSize)}} · {{deltaLabel}} · {{outLineCount}} lines
{{ num }}

What changed in this conversion{{ result.notices.length }}

note {{ note }}

About this converter

All five formats describe the same thing — a tree of keys, values, lists and nested groups — so every conversion here goes through one plain data structure in the middle: the input is parsed into it, the output is written from it. That is why the direction does not matter and why adding a format does not change how the others behave.

Where it gets interesting is that the formats are not equally expressive, and a converter that hides that is lying to you. TOML has no null, so a null key is written out as a comment rather than dropped silently. .env has no lists or nested maps, so nested keys flatten to SECTION__KEY and lists serialize as comma-separated values or JSON. Every edge case produces a visible notice so you know what changed.

Everything is evaluated locally in your browser. Configs often carry API keys, secrets, database URLs and token signing keys; this page has no analytics, no third-party scripts and nowhere to send them to — nothing you paste is uploaded, logged or stored.