Convert JSON to CSV
Flat, clean, ready
in one click.
Free JSON to CSV converter. Nested objects flattened with dot-notation, custom delimiter, UTF-8 BOM for Excel. Runs entirely in your browser — your JSON never leaves your device.
Three steps — paste your JSON and download a clean CSV in seconds.
Paste your JSON directly into the input area or upload a .json file. A live preview table shows the first rows with your column headers immediately — so you can verify the structure before converting.
Select comma (standard), semicolon (European Excel), tab (TSV) or pipe. Toggle dot-notation flattening for nested objects, include or exclude the header row, and enable UTF-8 BOM if you're opening the CSV in Microsoft Excel.
Click Convert and download the .csv file instantly — or copy the raw output to the clipboard. The file opens correctly in Excel, Google Sheets, LibreOffice, pandas and any other tool that reads CSV.
What the converter does under the hood.
JSON and CSV represent data in fundamentally different ways. A JSON array of objects is the most common structure that maps cleanly to CSV — each object becomes a row, and the union of all object keys becomes the column headers. Missing keys in some objects result in empty cells.
Nested objects are the main challenge. A CSV is flat by definition — it has no concept of nesting. JSONshift solves this with dot-notation flattening: {"address":{"city":"Paris"}} becomes a column named address.city. This preserves the data relationship in a way that's readable and reversible.
Values that contain the delimiter character are automatically quoted following the RFC 4180 CSV standard. Values containing double quotes have those quotes escaped by doubling them. This ensures the output is valid CSV that any parser — including Excel, pandas and the standard library csv module in Python — will read correctly.
Common workflows where a flat CSV is more practical than JSON.
API responses and database exports arrive as JSON. Converting to CSV lets you open the data directly in Excel or Google Sheets for pivot tables, charts and filtering — without writing a script or using a data pipeline.
While pandas can read JSON with pd.read_json(), a flat CSV is simpler to load and inspect. Converting first gives you a clean, typed DataFrame with predictable column names — especially when the source JSON is deeply nested.
Most databases and ETL tools accept CSV as a universal import format. Converting a JSON export to CSV allows direct import via COPY, LOAD DATA INFILE or a drag-and-drop import wizard — no custom script required.
JSON is unreadable to non-technical stakeholders. Converting to CSV produces a file that opens in any spreadsheet application — allowing product managers, analysts and executives to explore the data without any technical knowledge.
What each setting controls in the output CSV.
| Option | Values | What it does |
|---|---|---|
| Delimiter | Comma · Semicolon · Tab · Pipe | Comma is the RFC 4180 standard and works with all CSV parsers. Use Semicolon if you're opening the file in Microsoft Excel on a European locale (where comma is the decimal separator). Tab produces a TSV file — useful for terminals and PostgreSQL COPY. Pipe is safe when data contains both commas and semicolons. |
| Nested objects | Flatten · Keep as string | Flatten recursively expands nested objects into additional columns using dot-notation — address.city, address.zip. Keep as string serializes the nested object back to a JSON string and places it in a single cell — useful when the receiving system expects a JSON blob in that column. |
| Header row | Include · Exclude | Include adds the column names as the first row — the standard for almost all use cases. Exclude produces data rows only — useful when appending to an existing CSV that already has a header, or when the receiving system provides its own schema. |
| Encoding | UTF-8 BOM · UTF-8 | UTF-8 BOM prepends a byte-order mark (EF BB BF) that signals Microsoft Excel to read the file as UTF-8 — preventing accented characters, CJK text and special symbols from appearing as garbled mojibake. UTF-8 (no BOM) is cleaner for programmatic use — Python, pandas and most Unix tools prefer files without a BOM. |
Other free converters you might need next.
JSON flattened in
your browser. No upload.
The entire conversion runs in JavaScript locally. Your JSON is parsed by your own browser — it is never transmitted to any server, never stored, and gone the moment you close the tab.
The output follows RFC 4180 — the CSV standard used by Excel, Google Sheets, pandas, PostgreSQL COPY and every other major CSV parser. Values containing the delimiter or quotes are handled correctly automatically.
