JSON to CSV & YAML Converter
Paste JSON and get clean CSV or YAML instantly. Handles nested objects, arrays of objects, and custom delimiters — all in your browser, nothing uploaded.
id,name,role,active 1,Ada Lovelace,Mathematician,true
About this tool
How to use it
- Paste or type JSON into the left pane — a single object, or an array of objects.
- Pick a CSV delimiter and a YAML indent width from the toolbar if you need something other than the defaults.
- Click Convert, or just keep typing — the output updates live once the JSON parses.
- Switch between the CSV and YAML tabs to see either output for the same input, then Copy or Download it.
Why it matters
APIs and exports hand you JSON, but spreadsheets and most reporting tools want CSV — converting by hand is slow and error-prone once objects nest or arrays get long. YAML is the format most config files and CI pipelines expect, and writing it by hand from a JSON payload means re-typing every key and getting the indentation exactly right. Everything here runs in your browser, so nothing you paste is uploaded anywhere.
When to use it
Turning an API response into a CSV for a spreadsheet or a client. Converting a JSON config or fixture into YAML for a Kubernetes manifest, GitHub Actions workflow, or docker-compose file. Checking JSON is actually valid before pasting it somewhere that won't tell you why it failed.
Good to know
CSV flattening uses dot-notation for nested object keys and joins arrays of plain values with semicolons; an array of objects inside a field can't fit in one CSV cell, so it's kept as a raw JSON string in that cell instead. YAML output is block-style only — no flow style, anchors, or multi-document separators. Both conversions are deterministic transforms of exactly what you paste; nothing is inferred or filled in.
Common questions
How does it turn nested JSON into a flat CSV?
Nested objects are flattened into dot-notation column names — { "customer": { "name": "Ada" } } becomes a column called customer.name. An array of plain values (strings, numbers) in a field is joined with semicolons into a single cell. An array of objects inside a field can't fit in one CSV cell, so it's kept as a raw JSON string in that cell instead.
What if my JSON is an array of objects with different keys?
The CSV header row is the union of every key seen across all objects, in the order first encountered. Any row missing a given key gets an empty cell for it.
Which delimiter should I use?
Comma is the standard CSV delimiter and works with virtually every spreadsheet app. Use semicolon for European Excel setups that treat comma as a decimal separator, and tab (TSV) if you're pasting straight into a spreadsheet cell without import dialogs.
Is my data sent anywhere?
No. Parsing and conversion both happen with plain JavaScript in your browser tab. Nothing you paste is uploaded, logged, or stored — closing the tab clears it.
Why does it say my JSON is invalid?
The error message under the input is JavaScript's own JSON.parse error, which names the character position of the problem. The most common causes are trailing commas, single quotes instead of double quotes, and unquoted keys — all valid in JavaScript object literals but not in strict JSON.
Does it support JSON5 or comments in JSON?
No — this parses strict JSON only (RFC 8259), the same as JSON.parse. Strip comments and trailing commas before pasting if your source allows them.