Data
JSON to CSV Converter
Paste a JSON array of objects and download a CSV your spreadsheet app can open immediately.
Press ⌘ Enter to run
4 lines · 124 chars
Ready — press Run or ⌘ Enter
How this tool handles files
- Processing
- In your browser, on-device
- Storage
- Nothing stored
- Output
- A file you download
- Your responsibility
- Review before official use
- Runs in your browser. Your file is processed on your own device and, on this site, is not uploaded to our servers.
- Nothing is stored. Your file and its output are gone the moment you close or reload the page.
- Review sensitive files (bank, ID, medical) and check the output before sharing it.
Every tool on FormatOS runs in your browser. Read our Privacy Policy and File Handling Policy.
Common uses
- Open API responses in Excel or Numbers
- Turn JSON fixtures into spreadsheets
Limitations
- Nested objects are flattened to JSON strings
Getting API responses into a spreadsheet
Most REST APIs hand back a JSON array of objects, which is awkward to read directly. Paste that array here, run the conversion, and you get CSV that Excel, Numbers, Google Sheets, or LibreOffice opens straight away. A common workflow is copying a response out of your browser network tab or a tool like curl, dropping it in the input box, then downloading the result as formatos-json-to-csv.csv for a colleague who only works in spreadsheets.
It also helps with JSON fixtures and seed data. If you keep test records as an array of objects, this converter turns them into a flat table you can scan by eye, sort, or filter, without writing a throwaway script. The column order follows the order keys first appear across your objects.
You do not need an account, and nothing is uploaded on this site. The conversion runs entirely in your browser using JavaScript, so the JSON you paste stays on your machine. That makes it reasonable for data you would not want to send to a third-party server.
How rows, columns, and missing keys are handled
The converter expects the top-level value to be a JSON array, and it builds the header row from the union of every key it finds across all objects. If one record has an "email" field and another does not, "email" still becomes a column, and the record that lacks it simply gets an empty cell. This means uneven objects line up correctly instead of shifting columns out of alignment.
Only plain objects become rows. If your array mixes in loose strings, numbers, or nested arrays as top-level items, those non-object entries are skipped rather than turned into broken rows. You can also paste a single JSON object instead of an array; it is treated as a one-row table.
Cell values are stringified directly, and the output is properly escaped: any value containing a comma, a double quote, or a line break is wrapped in quotes, with internal quotes doubled. That keeps your CSV valid even when fields contain commas or multi-line text.
Working around nested data and other limits
This tool produces a flat table, so nested objects and arrays inside a field are not expanded into their own columns. Instead, each nested value is written as a compact JSON string in a single cell. If a record holds an "address" object, you will see something like {"city":"..."} in that column rather than separate city and zip columns. When you need fully flattened output, reshape the JSON before converting, or split the nested fields into top-level keys first.
Because everything runs in the browser, extremely large inputs can strain memory. If a big array feels slow, convert it in batches. The Run button is disabled until there is input, and you can trigger a run any time with Ctrl or Cmd plus Enter.
Your JSON must be syntactically valid; the tool parses it before converting, so a stray trailing comma or unquoted key will surface an error message instead of output. Fix the JSON in the input box and run again. Use Reset sample to restore the built-in example if you want to see the expected shape.
Frequently asked questions
An array of flat objects, like [{"name":"A","age":1}, …]. The keys across the objects become the CSV columns.
Nested values are flattened to a JSON string inside the cell so no data is lost. For deeply nested data, flatten it first for a cleaner spreadsheet.
Yes. The output is standard comma-separated values that any spreadsheet app can open directly.
No. The conversion runs in your browser — your text or file is processed on your own device and, on this site, is not uploaded to a server, and we do not intentionally store it.
Related data tools
Tool last reviewed: June 30, 2026 · Report a problem