How to convert JSON to CSV

A complete walkthrough from pasting your JSON to downloading a clean CSV. All processing happens in your browser — no upload required.

01

Paste, upload, or drag your JSON

Get your JSON into the converter using any of three methods.

Paste JSON directly into the input area, click Upload to pick a .json file from your device (read via FileReader API — no server upload), or drag a file onto the input area. The character count and line count update live as you type.

example
// Most common: array of objects
[
  { "id": 1, "name": "Alice", "role": "Engineer" },
  { "id": 2, "name": "Bob",   "role": "Designer" }
]
02

Configure options (optional)

Adjust delimiter, flattening, column filters, and more.

Switch to the Options tab to customise output. Choose your delimiter (comma, semicolon, tab, pipe), configure nested object flattening, set empty value replacements, filter columns by key name, and set a custom output filename. All settings are saved to localStorage automatically.

example
// Nested JSON → auto-flattened
{ "user": { "name": "Alice", "city": "London" } }
// Output columns: user.name, user.city
03

Click Convert to CSV

Conversion happens instantly in your browser — no upload.

Hit Convert to CSV or press Ctrl+Enter. The converter validates your JSON, flattens nested objects, resolves all unique column names across every row, encodes each field, and assembles the CSV — entirely in memory. No data leaves your device. Stats shown: rows, columns, size, time.

example
// All work happens here — in your browser tab
// No network call. No server. No wait.
// Typical time: < 50ms for most files
04

Download or copy the result

Preview the table, download the .csv, or copy to clipboard.

The Output tab opens automatically. Preview rows in a formatted table, download the .csv (UTF-8 with BOM for Excel), or copy the raw CSV text to your clipboard. A local conversion history is stored in your browser only — never transmitted.

example
id,name,role
1,Alice,Engineer
2,Bob,Designer

Advanced topics

Nested JSON flattening

Nested objects are joined with your chosen separator (default: dot). {"user":{"name":"Alice"}} becomes column user.name. Enable Stringify nested to keep objects as JSON strings instead.

Inconsistent keys across rows

All unique keys across every row are collected into one column list. Missing values become empty cells. Example: [{id:1,price:10},{id:2,discount:"5%"}] → columns: id, price, discount.

Large file performance

Under 1 MB: instant. 1–10 MB: under 200ms. 10–50 MB: under 2s. No network round-trip means performance depends only on your device. The UI stays responsive because conversion is deferred by one tick for large inputs.

Privacy and data handling

Every byte is processed in your browser tab. FileReader API reads files locally. Only localStorage is used for persistence (your preferences and history metadata — never file content). Clear all data at any time with the Clear all button.

Ready to try it?

Free, instant, and completely private.

Open the converter →