Data Format Converter

Convert between CSV, JSON, YAML and TOML in any direction.

Input
What it does

Converts data between CSV, JSON, YAML and TOML in all twelve directions. Paste any of the four and it works out which one you gave it, or pick the source format yourself. CSV parsing types its values, so 30 becomes a number and true becomes a boolean instead of a quoted string, and the delimiter is sniffed so tab separated and semicolon separated files work too.

How to use it

Paste or drop your data, leave "From" on auto detect, and choose the target format. Set the indent to control the width of pretty printed JSON and YAML, or set it to 0 to minify JSON. Turn off the CSV header switch when your file starts straight in on the data, and the columns are named col1, col2 and so on instead.

Why this one

Most converters online handle exactly one pair, which means bookmarking four sites, and they pay for themselves by pushing your file through an upload box surrounded by ads. This one does every direction on one page, and it is honest about the lossy corners: nested data going to CSV is flattened rather than quietly mangled, and keys that TOML cannot hold are listed in a comment rather than silently dropped.

FAQ
How does auto detect decide which format I pasted?
It tries them in order of strictness. Strict JSON first, since every valid JSON document is also valid YAML. Then TOML, but only if the text has a key = value line or a [section] header, because a TOML parser will otherwise accept fragments you meant as something else. Then YAML, rejecting the result if it came back as one plain string, which is what happens when you feed a YAML parser ordinary prose. Then CSV, which needs a consistent delimiter on every line. If none of that fits, you get an error asking you to pick the source format instead of a wrong guess.
What happens to nested JSON when I convert it to CSV?
CSV is flat, so one level of nesting is flattened into dotted column names: an object at "user" holding "name" becomes the column "user.name". Anything deeper than that, and any array value, is written into the cell as inline JSON so nothing is lost, even though it is no longer split across columns. Arrays of scalars or mixed values have no table shape at all, so those raise an error suggesting JSON or YAML instead of producing a misleading file.
Is my data uploaded anywhere?
No. The conversion runs entirely in your browser, so your files and inputs never leave your device, and the page keeps working with no connection at all after the first load.