JSON to CSV
Convert JSON arrays to CSV spreadsheet format.
JSON · Max 10MB
Drop a file here, or browse
JSON
How do I use JSON to CSV?
Upload your JSON file or paste JSON content (must be an array of objects)
The keys become CSV headers and each object becomes a row
Download the CSV file or copy the text
What is JSON to CSV?
Convert a JSON array of objects into a CSV spreadsheet that opens directly in Excel, Google Sheets, Numbers, or any tool that imports CSV. Common use cases: exporting an API response so a non-technical teammate can analyze it, turning a database query result (often shipped as JSON) into a spreadsheet for reporting, or migrating data between two systems where one speaks JSON and the other expects CSV. The converter handles object keys as column headers, quotes fields containing commas or newlines correctly, and escapes embedded quotes per RFC 4180. Runs entirely in your browser — useful when the data is sensitive (customer records, financial data) and you can't upload it to a third-party server. Powered by JustUse.me — free, ad-free, and private. This tool runs entirely in your browser. Your files are never uploaded to any server.
Frequently asked questions about JSON to CSV
What JSON structure does the converter expect?
An array of flat objects with consistent keys: `[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]`. The first object's keys become the CSV column headers, and every subsequent object fills one row. Objects don't all need to have every key — missing values become empty cells. If your data is wrapped in a parent object like `{"users": [...]}`, drill down to the array first (e.g., `data.users`) before pasting. For deeply nested or hierarchical JSON, you'll typically want to flatten it first since CSV is a flat tabular format.
How does the converter handle nested objects and arrays inside JSON?
Nested values are serialized as their JSON string representation in the cell. So `{"name": "Alice", "address": {"city": "NYC"}}` produces a column called `address` with the literal value `{"city":"NYC"}`. This preserves the data but isn't usually what you want for analysis. The cleaner pattern: flatten the structure first (e.g., make `address.city` its own column) using a tool like jq, or transform the JSON in your code before pasting. CSV is fundamentally flat, and forcing nested data into it always involves trade-offs.
Will commas, quotes, and newlines in my data break the CSV?
No — the converter follows RFC 4180 quoting rules. Any value containing a comma, double-quote, or newline gets wrapped in double quotes, and embedded double-quotes inside that value are escaped by doubling them (`"` becomes `""`). So a value like `She said "hi, world"` becomes `"She said ""hi, world"""` in the CSV, which Excel, Google Sheets, and any standards-compliant parser will read back correctly. If you're seeing fields split across columns when you open in Excel, the original tool that generated the CSV probably wasn't quoting properly — this one is.
Why does Excel show garbled characters when I open my CSV with Chinese, emoji, or accented text?
That's an Excel quirk: by default, Excel on Windows opens CSV files using the system's legacy encoding (often Windows-1252), not UTF-8, so any non-ASCII characters look like mojibake (`å¼µ` instead of `張`). The fix is to either (a) open Excel first and use Data → From Text/CSV → choose UTF-8, or (b) prepend a UTF-8 byte-order mark (BOM, `\uFEFF`) to the file, which signals UTF-8 to Excel. This converter outputs plain UTF-8 without a BOM by default to keep the file portable. Google Sheets and Numbers handle UTF-8 correctly without any workaround, so if you have the choice, open the file there.
Can it handle large JSON files like database exports?
Yes, up to several megabytes — the conversion runs in browser memory using JavaScript's native JSON parser plus a streaming CSV writer, which handles 50,000+ rows on a modern laptop without breaking a sweat. For truly massive exports (multi-million rows, hundreds of MB), you'd want a streaming command-line tool like `jq -r` piped to a CSV writer, since the browser's memory headroom isn't designed for that scale. But for everything in the API-response or report-export range — typical Stripe, Shopify, or Postgres exports — this handles it fine and keeps the data on your device.
Related tools
Last updated: April 2026