JSON to CSV Converter

Paste any JSON array of objects and instantly download a CSV file. Flattens nested objects with dot notation, handles arrays within objects, and supports any delimiter. Runs entirely in your browser — nothing is uploaded.

Your JSON never leaves your browser — no upload, no cloud storage, no server processing. Safe for files containing API keys or credentials.
JSON input
CSV output
Rows: 0 Columns: 0 Input: 0 chars

How the conversion works

The converter scans every object in your JSON array to build a complete column list. This means rows with different keys are handled correctly — missing values become empty cells rather than shifting columns out of place.

Nested objects are flattened using dot notation: {"address":{"city":"London"}} becomes a column named address.city. Arrays within objects (e.g. a tags field) are joined into a single cell with semicolons: tag1;tag2.

When to use each delimiter

Enable Quote all fields to wrap every value in double quotes — useful for strict CSV parsers or values containing special characters. By default only fields that require quoting are quoted.

How this tool compares

Feature Talora JSON to CSV Online converters Python pandas
Flatten nested objects Yes — dot notation Often no Yes — json_normalize
Inconsistent keys across rows Yes — blank cells Varies Yes
Custom delimiter Comma, tab, semicolon, pipe Comma only (usually) Any character
Data privacy 100% client-side Uploaded to server Local
No installation required Yes Yes Install Python + pandas

Frequently Asked Questions

How do I convert JSON to CSV?

Paste your JSON array of objects into the input pane. The converter immediately produces a CSV with one column per key and one row per array element. Click Download to save the file or Copy to paste it into a spreadsheet.

How are nested objects handled?

Nested objects are flattened using dot notation. For example, {"address": {"city": "London", "zip": "EC1"}} produces two columns: address.city and address.zip. This matches the behavior of Python's pandas.json_normalize() and jq.

How are arrays inside objects handled?

Array values such as "tags": ["api", "auth"] are joined into a single CSV cell separated by semicolons: api;auth. If you need each element in its own row, restructure the JSON before converting.

What if rows have different keys?

The tool scans all rows to collect every key that appears anywhere in the array. Rows missing a key get an empty cell in that column. This correctly handles inconsistent API responses where optional fields are omitted rather than null.

Which delimiter should I use?

Use Comma for most spreadsheets and database imports. Use Tab to paste directly into Excel or Google Sheets without import dialogs. Use Semicolon if your locale uses commas as decimal separators. Use Pipe for data that may contain commas or semicolons in values.

When should I enable quote-all fields?

By default only fields that contain the delimiter, a newline, or a double-quote are quoted per RFC 4180. Enable Quote all fields to wrap every value in double quotes — useful for maximum compatibility with strict CSV parsers.

Does this tool send my data to a server?

No. All conversion runs entirely in your browser using JavaScript. Your JSON is never uploaded or transmitted — it never leaves your device. This makes it safe for JSON files containing API keys, credentials, or other sensitive data.

How do I convert JSON to CSV in Python?

With pandas: import pandas as pd; df = pd.json_normalize(data); df.to_csv('output.csv', index=False). With stdlib only: import json, csv; data = json.load(open('in.json')); w = csv.DictWriter(open('out.csv','w'), fieldnames=data[0].keys()); w.writeheader(); w.writerows(data). The stdlib approach does not flatten nested objects.