Loading…
Convert JSON arrays to CSV for spreadsheets. Paste JSON, pick a delimiter, and download the CSV instantly.
JSON to CSV Converter is loading — interactive editor will appear here. Use examples below to try instantly once loaded.
Press ? for keyboard shortcuts
Converts JSON data to CSV format with automatic nested object flattening using dot notation, supporting arrays of objects and nested structures. Offers three null handling modes (empty string, null literal, or skip row) and BOM insertion for Excel compatibility.
JSON is the standard data interchange format, but CSV remains essential for spreadsheets, legacy systems, and data analysis tools. Bridges the gap between structured JSON and tabular CSV without manual transformation.
This tool is part of the DevStackIO platform — a collection of free online developer tools from DevStackIO. Browse more free developer resources on DevStackIO.
Data analysts, backend developers, and anyone who needs to convert JSON API responses or datasets into spreadsheet-compatible CSV files.
Paste or upload your JSON data into the input editor (ensure it contains an array of objects for best results)
Select your preferred null handling mode from the dropdown: Empty String, Null Literal, or Skip Row
Toggle BOM (Byte Order Mark) ON if the CSV will be opened in Microsoft Excel to ensure correct encoding
Choose your delimiter (comma, semicolon, tab) and optionally enable "Quote All Fields" to wrap every value in quotes
Click "Convert" and inspect the preview table to verify nested keys were flattened correctly with dot notation
Download the result as a .csv file or copy to clipboard; adjust settings and reconvert if needed
Input: [{"user":{"name":"Alice","age":30},"tags":["admin","editor"]}] → Output: user.name,user.age,tags.0,tags.1\nAlice,30,admin,editorInput: [{"id":1,"value":null},{"id":2,"value":"ok"}] with nullMode=skip → Output: id,value\n2,okInput: [{"name":"Bob","role":"dev"},{"name":"Carol","role":"ops"}] → Output: name,role\nBob,dev\nCarol,opsInput: [{"meta":{"version":"1.0"},"items":[1,2]}] → Output: meta.version,items.0,items.1\n1.0,1,2Can I convert deeply nested JSON with 5+ levels?
Yes, the tool flattens recursively using dot notation regardless of depth level.
What happens if my JSON has inconsistent field names across objects?
Missing fields are rendered as empty cells based on the null handling mode selected.
Does this work with JSON arrays of primitives like [1,2,3]?
Yes, but the output will be a single column with a default header name; best results come from arrays of objects.
Can I import the CSV back into JSON?
No, this is a one-way conversion; consider a separate CSV-to-JSON tool for reverse conversion.
What is BOM and when do I need it?
BOM is a byte-order mark that helps Excel detect UTF-8 encoding; enable it when the file will be opened in Excel.
How are null values handled?
Depending on the selected mode they become empty strings, the literal null, or the whole row is skipped.
What delimiter should I use?
Comma is the default, but semicolon is common in locales where comma is the decimal separator.
Authoritative specifications, standards, and in-depth reading for JSON to CSV Converter.
Paste CSV and get JSON. Handles headers, delimiters, and spreadsheet exports — all locally.
Convert JSON to YAML for configs. Use for JSON input; for YAML validation use yaml-formatter, for TOML cross-format use toml-converter. Input: JSON ≤10MB. Returns YAML or JSON error. 100% client-side.
Convert JSON to XML with root element control. Use for JSON input only; for reverse use xml-to-json, for JSON to YAML use json-to-yaml. Input: JSON ≤10MB. Returns XML or line-numbered JSON error. 100% client-side.
Convert XML to JSON preserving attributes and nesting. Use for XML input only; for reverse use json-to-xml. Input: XML ≤10MB. Returns JSON or XML parse error. 100% client-side.
Generate TypeScript interfaces from JSON with optional readonly and export. Use for TS types; for Go use json-to-go, for generic code use json-to-code. Input: JSON ≤10MB. Returns .ts interfaces or JSON error. 100% client-side.
Generate Go structs with json tags from JSON. Use for Go only; for TypeScript use json-to-typescript. Input: JSON ≤10MB. Returns Go code or JSON error. 100% client-side.
Extract HTML tables to JSON arrays for scraping. Use for <table> input only; for CSV to JSON use csv-to-json. Input: HTML with tables ≤10MB. Returns JSON array or NO_TABLE_FOUND error. 100% client-side.
Generate code types from JSON. Use for boilerplate; for TS only use json-to-typescript, for Go use json-to-go. Input: JSON ≤10MB. Returns code. 100% client-side, files never leave browser.