JSON to CSV Converter Free
Convert JSON arrays to clean CSV files online for free. Paste your JSON, auto-extract column headers from object keys, choose delimiter, preview your data, and download. Handles nested objects, arrays, and missing fields. Runs entirely in your browser — data never uploaded.
JSON Input
Data Preview
Showing up to 10 rows · total
Pro — batch JSON files, deep flatten, custom column order, scheduled exports, API
API access · Priority queue · Team workspace
How It Works
Paste Your JSON
Paste any JSON array of objects into the input field. Each object in the array becomes one CSV row. Click Sample JSON to load a realistic employee dataset and explore how the converter handles nested addresses, array fields, and missing values before using your own data. Objects at any depth of nesting are supported.
Configure & Preview
Choose delimiter (comma, semicolon, tab, or pipe), how to handle nested objects (stringify to a JSON string or flatten to dot-notation columns), and whether to include a header row. Click Preview to see the first 10 rows in a formatted table. Verify column alignment before downloading so you catch any structural surprises early.
Download or Copy CSV
Click Download CSV to save the file instantly — no server round-trip. Or use Copy CSV to paste the output directly into another tool. Column headers are auto-extracted from all unique keys across every object in the array, so even sparse or inconsistent JSON with missing fields produces a complete, aligned CSV with empty cells where values are absent.
JSON to CSV Features
Professional JSON flattening and export built entirely in your browser
Auto Header Extraction
Column headers are automatically extracted by scanning all keys across every object in the JSON array — not just the first object. This means sparse JSON where different rows have different keys still produces a complete, aligned CSV. Missing values are represented as empty cells, not errors, so the file is always well-formed.
Nested Object Handling
Choose how nested objects are exported. Stringify mode converts {"address":{"city":"NYC"}} to a JSON string in that cell — safe and lossless. Flatten mode expands it to a new column address.city with the value NYC — ideal when you need the data in separate columns for analysis or database import.
Flexible Delimiters
Export as comma-separated (universal default), semicolon-separated (required for Excel in European locales where the decimal separator is a comma), tab-separated (compatible with databases, BI tools, and most ETL pipelines), or pipe-separated (used by legacy systems where data often contains commas). Pick the delimiter your downstream tool expects.
RFC 4180 Quoting
Fields containing the delimiter character, double-quote characters, or newlines are automatically wrapped in double-quotes per the RFC 4180 CSV standard. Embedded quotes are escaped by doubling them. Use "Quote all fields" to wrap every value regardless of content — some legacy parsers and database import tools require fully quoted CSV to handle edge cases reliably.
Live Data Preview
Before downloading, preview up to 10 rows of parsed data in a formatted HTML table. Column headers are highlighted in orange. The preview reflects the exact delimiter and quoting options you have selected, showing how each cell will appear in the final CSV. The stats row displays total column count and full row count for verification.
100% Private
The entire conversion runs in your browser using JavaScript — no JSON data is ever uploaded, transmitted, or stored on any server. This makes it completely safe for converting API responses with authentication tokens, database query results containing PII, internal configuration data, financial records, and any other JSON payload that must not leave your device or network.
Free vs Pro
| Feature | Free | Pro |
|---|---|---|
| JSON input size | Unlimited | Unlimited |
| Nested flatten depth | 1 level | Unlimited depth |
| Custom column order | — | |
| Batch JSON file convert | — | |
| Scheduled auto-export | — | |
| REST API access | — |
Frequently Asked Questions
Yes — CSV is a flat, tabular format, so the input must be a JSON array where each element is an object (a row). A single top-level object, nested arrays, or primitives cannot be directly mapped to CSV rows. If your JSON is a wrapped object like {"data":[...]}, copy the inner array and paste that instead. If you have a single object, wrap it in an array: [{"key":"value"}].
Column headers are built by scanning every object in the array and collecting all unique keys — not just from the first row. If an object is missing a key that other objects have, that cell is left empty. This ensures the CSV is always correctly aligned even when your JSON data is sparse or inconsistent, which is common with API responses and NoSQL database exports.
Arrays inside objects (for example, a tags field that contains ["admin","editor"]) are converted to a JSON string in that cell — ["admin","editor"] — regardless of the nested object mode selected. This is because there is no standard way to flatten an inner array into flat CSV columns without knowing how many elements it might contain. If you need each tag in its own column, pre-process your JSON to extract those fields before converting.
Use comma for English-language Excel (US, UK, Australia, Canada). Use semicolon if your Excel uses a European locale (Germany, France, Italy, Spain, etc.) — in these locales the decimal separator is a comma, so Excel expects semicolons as the CSV delimiter. If Excel opens your CSV as one long column, switch to the semicolon delimiter and re-download. Alternatively, use the CSV to Excel tool to convert directly to .xlsx and skip the delimiter issue entirely.
Stringify mode converts nested objects to a JSON string in a single column — {"city":"NYC","zip":"10001"} stays as one cell. This is lossless and easy to reverse. Flatten mode expands each nested key into its own column using dot notation — address.city and address.zip become separate columns. Flatten is better for database import, SQL analysis, or Excel pivot tables where you need each value in its own cell.
No — the entire conversion runs in your browser using JavaScript. Your JSON is parsed locally by JSON.parse() and the CSV is constructed in memory and downloaded directly to your device. No data is transmitted, logged, or stored at any point. This makes it safe for API responses containing authentication tokens, database records with personal information, financial transaction data, and any other sensitive JSON that should never leave your device.