JSON ⇄ CSV
Flattens nested JSON into columns or rebuilds objects from a table, with a dot-path column naming rule.
Turns an array of JSON objects into a spreadsheet table: one row per record, one column per key. The interesting part is what it does with the parts of JSON that a table has no room for — nested objects, arrays, and records that do not all carry the same keys — and each of those is a choice you make at the top of the page.
user.address.city becomes its own column.
tags.0, tags.1 — widest, loses nothing.
Missing values are blank cells.
JSON in
Drop a .json file
Read in this tab. Nothing is uploaded.
CSV out
The download carries a UTF-8 BOM so Excel on Windows does not read 한글 as CP949. The copy button gives you the text without it.
How to use it
Paste an array of objects
That is the shape a table wants. A single object becomes one row, and an object wrapping an array — the usual `{ "data": [...] }` API envelope — is unwrapped for you, with a note saying so.
Decide how nesting flattens
Dotted paths give `user.address.city` its own column, which is what you want if the sheet is going to be filtered or pivoted. First level only keeps `user.address` as one cell holding JSON, which is smaller and reversible.
Decide what happens to arrays
One column each (`tags.0`, `tags.1`) loses nothing but widens the sheet to the longest array in the document. Joined puts `a; b; c` in one cell and reads well. As JSON keeps the brackets so a later step can parse it back.
Check the column types in the preview
Each column header carries the type the values actually had and, when some records were missing it, a present/total count. A column typed `mixed` is usually where the export is going to bite you later.
Download CSV, or copy TSV
The CSV download has a UTF-8 BOM in front of it so Excel on Windows opens Korean correctly. If you are pasting into a sheet rather than opening a file, switch to TSV and use the copy button.
Common questions
Why is my Korean text broken in Excel?
Because the file was saved without the BOM — Excel on Windows still guesses CP949 for a bare UTF-8 CSV. The download button here adds one; the copy button deliberately does not, because a BOM pasted into a text editor shows up as a stray character.
Can it convert back, CSV to JSON?
Not on this page — it only goes one way. And the trip is lossy in general: dotted column names can be rebuilt into objects, but a joined array cannot be told apart from a string that happened to contain a semicolon.
What happens to records with different keys?
That is the "Ragged rows" setting. Every key keeps them all and leaves blanks, Shared keys only drops any column that is not in every record, and First row’s keys treats record one as the schema and silently ignores the rest. The first is the safe default; the second is what you want when a downstream importer refuses ragged files.
Are big numbers safe?
The parse is the browser’s, so numbers beyond 2^53 are already rounded before the table is built — and a spreadsheet will round them again on open. Long ids belong in the JSON as strings, and even then Excel may reformat them; a leading apostrophe in the sheet is the usual defence.
Feed it from
Markdown Table Builder
Edits a table as a grid and emits aligned Markdown, or reformats a messy pasted table.
JSON Lines Converter
Converts between NDJSON and a JSON array, and reports the number of any line that will not parse instead of stopping.
jq Playground
Runs jq 1.7 filters against pasted JSON in the browser with a cheatsheet, and hands you the matching command line.
JSON Formatter & Validator
Pretty-prints, minifies and validates JSON, pointing at the exact line and column of a syntax error.
Next
These accept what this tool produces, so the result can go straight in.
CSV to Excel
Writes one or many CSV files into an .xlsx workbook with typed columns, a header row and filters.
CSV Viewer
Opens a large delimited file with type detection, column stats and sorting, without loading it all into memory.
JSON Formatter & Validator
Pretty-prints, minifies and validates JSON, pointing at the exact line and column of a syntax error.
JSON Lines Converter
Converts between NDJSON and a JSON array, and reports the number of any line that will not parse instead of stopping.
Base64 Encoder & Decoder
Encodes and decodes Base64 and Base64URL for text or files, handling UTF-8 correctly.
curl to Code
Converts a curl command into fetch, axios, Python requests, Go, PHP or PowerShell.