JSON → CSV converter
Flatten an array of JSON objects into a table you can open in Excel.
0 B uploaded — this page has not sent your files anywhere?
Other conversion sites upload your spreadsheet to a server, process it there, and say they delete it after a while. Until that happens, your rows sit on someone else’s server. Here there is no upload step at all. The more sensitive the data — customer lists, payroll, anything with personal identifiers — the more that difference matters. See how to verify it →
More table converters
What happens to nested values and long numbers when JSON becomes CSV?
Open a developer’s JSON export or an API response in a text editor and all you get is braces, with no way to sort or total anything. This tool gathers the keys of an array of objects into column headers, lays each object out as one row and saves a CSV that opens straight in Excel. It flattens exactly one level deep, so it helps to know where nested values end up.
A closer look
Columns are built from every object’s keys in the order they first appear. A key that only shows up in a later object is added as a new column on the right, and objects without it leave that cell empty. When a value is itself an object or array, it is not split into columns; it goes into one cell as JSON text such as {"city":"Austin"}, with its inner double quotes doubled as CSV requires. An array of arrays becomes a table whose first array is the header, and an array of plain numbers or strings becomes a single column called value. A wrapper with exactly one key holding an array, like {"data":[...]}, is unwrapped automatically.
Strings are copied as written, so "00123" stays 00123; true and false become TRUE and FALSE, and null becomes an empty cell. Numbers are written out in full, never in scientific notation, so a millisecond timestamp such as 1719812345678 comes out as is rather than as 1.71981E+12. Whole numbers of 16 digits or more, such as long order numbers or IDs, are carried over as text before their last digits can be rounded, so they come out exactly as written in the JSON. The downloaded CSV carries a UTF-8 BOM so Excel reads accents correctly.
How to use it
- Choose a .json file in the Upload file tab, or put JSON in the Paste text tab and press Load as table. On this page, pasted text is always parsed as JSON.
- Check the preview header to see that every key became a column, and look for columns holding whole chunks of JSON text from nested values.
- Press Download CSV to save a .csv named after the original, or Copy result to take the text with you.
When it helps
Common snags
Tip Column order follows the key order of the first object, so if you want the columns in a particular order, arranging the keys of that first object is all it takes.
Frequently asked questions
Which JSON shapes are supported?
An array of objects [{...},{...}] is the primary shape. An array of arrays becomes the table as-is, and a wrapper object like {"data":[...]} is unwrapped automatically. Nested objects/arrays are stored as JSON strings in their cells.
What if objects have different keys?
Columns are built from the union of all keys; missing values are left blank.
My CSV shows garbled characters
sheetmoa reads your file as UTF-8 first. If it finds broken characters (�), it retries only with the Korean legacy encoding EUC-KR (CP949), which Korean Excel uses by default; old .xls files are also read with code page 949. No other legacy encoding is tried. Files saved as UTF-8 (Excel's "CSV UTF-8 (Comma delimited)") open correctly, but a CSV saved in Windows-1252 (what Excel's plain "CSV (Comma delimited)" produces on Western-language Windows) can show broken accents such as "A�o". If that happens, re-save the file in Excel as "CSV UTF-8 (Comma delimited)" and open it again.
Is my data uploaded to a server?
No. Every conversion runs inside your browser and your file is never sent over the network. Safe even for customer lists and confidential spreadsheets.
Is it free?
Completely free — no limits on file count or size, and no sign-up.