JSON to CSV Converter
Flatten nested JSON arrays into clean CSV tables.
Your data is processed entirely in your browser and is never uploaded.
Tool workspace
Drag & drop file here or browse
Options
Flattens properties like {"user": {"name": "John"}} to user.name
Three steps to convert JSON to CSV
Paste or upload
Paste your JSON array or upload a .json file. We support files up to 15M characters.
Configure options
Choose delimiter (comma, semicolon, tab), toggle flattening for nested objects, and decide whether to include headers.
Convert & export
Click Convert to transform your JSON into clean CSV. Copy to clipboard or download as a .csv file. All offline.
Flattening a tree into a table
JSON → CSV turns an array of JSON objects into a flat CSV table. Each object becomes a row and its keys become columns. Because CSV is flat, nested objects must be flattened first using dot notation. { "user": { "name": "John" } } becomes a user.name column, and you can choose the delimiter (comma, semicolon, or tab), whether to include a header row, and whether to flatten nesting at all. Conversion runs in a background worker for large files so the editor stays responsive, and the floor is a clean CSV you can open in any spreadsheet.
Common issues & tips
Top-level must be an array
The converter expects an array of objects, one object per row. A bare object, string, or number has no rows to flatten into. Load this and read the message.
{ "name": "Ada", "role": "engineer" }Ragged rows become empty cells
When objects have different keys, the union of all keys becomes the header and missing values are left blank. Enable flatten if you have nested objects; otherwise nested values are serialized into a single cell.
[
{ "id": 1, "name": "Ada" },
{ "id": 2, "name": "Alan", "role": "engineer" }
]Delimiter is a destination choice
Comma works with most spreadsheets. Semicolon suits locales where comma is the decimal separator, and tab is handy for pasting into editors. Pick what the file you're opening expects.
Flattening is lossy in one direction
Nested structure does not round-trip: a CSV row can't nest, so converting back (CSV → JSON) won't restore the original tree. Flatten when the table is the destination, not a detour.
Try these
[
{ "id": 1, "name": "Ada", "email": "ada@example.com" },
{ "id": 2, "name": "Alan", "email": "alan@example.com" }
]Three keys, two rows, a textbook array of objects.
[
{ "id": 1, "user": { "name": "Ada" } },
{ "id": 2, "user": { "name": "Alan" } }
]Flatten turns user.name into a dotted column.
pair this withReverse it → CSV → JSON·Format the source → JSON Formatter
Go deeper
Frequently asked questions
Is my JSON data uploaded to a server?
No. Everything runs locally in your browser. Your JSON is never sent to any server. The conversion happens 100% client-side using a Web Worker for large files.
What is the maximum file size?
The tool accepts JSON inputs up to 15 million characters. For files above 500K characters, a preview is shown and the full content is used only when you click Convert. Files above 5M characters trigger a confirmation dialog before processing.
How does object flattening work?
When flattening is enabled, nested objects are expanded using dot notation. For example, {"user": {"name": "John"}} becomes a column named user.name with value John. This ensures deeply nested JSON is represented as flat CSV columns.
Which delimiters are supported?
You can choose between comma (,), semicolon (;), and tab (\\t) delimiters. The default is comma, which works with most spreadsheet applications like Excel and Google Sheets.
Can I cancel a running conversion?
Yes. During conversion, a Cancel button appears beside Convert. Click it to stop the conversion. For large files using a Web Worker, cancellation also terminates the worker thread to free memory.
Does the tool work offline?
After the initial page load, the tool works offline. There is no server-side dependency for the conversion logic. All processing is built into the JavaScript bundle.