JSON ↔ CSV Converter
Paste a JSON array of objects and get a CSV table, or switch the direction to turn CSV into JSON.
Input · JSON
Output · CSV
How to use JSON ↔ CSV Converter
- 1Paste a JSON array of objects into the input panel, or press Sample. For CSV input, set Direction to CSV → JSON.
- 2Choose the delimiter and the other options. The result updates as you go, and Swap sends it back the other way.
- 3Press Copy to copy the result, or Download to save a .csv file that Excel opens with the text intact.
JSON ↔ CSV Converter options
- Direction
- JSON → CSV (default) or CSV → JSON. Swap moves the result into the input and reverses the direction.
- Delimiter
- Comma (default), semicolon, tab, or pipe. When reading CSV, Auto-detect picks the delimiter from the first lines, or you can choose one yourself.
- Nested objects
- Dot paths (default) spreads a nested object over columns such as a.b. JSON string keeps the whole object in one cell. Arrays are always written as a JSON string.
- Line break
- CRLF (default, as in RFC 4180) or LF for the rows of the CSV.
- UTF-8 BOM in the downloaded file
- On by default. Adds the three bytes EF BB BF to the start of the downloaded .csv file so that Excel reads it as UTF-8. The output panel and Copy never include the BOM.
- First row is a header
- On by default when reading CSV. The first row becomes the keys of each object. When off, every row becomes an array.
- Detect numbers
- Off by default when reading CSV, so every value is a string. When on, values written like a JSON number become numbers, exactly as written. Values such as 007 stay strings.
The CSV format this tool writes
There is no single CSV standard, but RFC 4180 describes the form most programs agree on, and this tool follows it. Rows end with CRLF, including the last one. A value is wrapped in double quotes only when it contains the delimiter, a double quote, or a line break, and a double quote inside a value is written twice. Spaces at the start or end of a value are part of the value and are left alone.
Columns appear in the order their keys are first seen. If a later object has a key the earlier ones did not, a new column is added on the right, and rows without that key get an empty cell.
Reading CSV
Quoted cells may contain delimiters, double quotes, and line breaks. A line break at the very end of the input does not create an empty row. If a quote is opened and never closed, the tool still shows what it could read and tells you which record looks wrong.
Why the download has a BOM
A UTF-8 file does not need a byte order mark, and most programs ignore it. Excel is the exception. Without the mark it reads a CSV file in the legacy encoding of the system, and Korean or Japanese text turns into unreadable characters. The mark is added only to the downloaded file. JSON input itself is read according to RFC 8259.
JSON ↔ CSV Converter examples
JSON to CSV (defaults: comma, CRLF)
Only values that contain a comma, a double quote, or a line break are quoted. A double quote inside a value is written twice.
Input
[{"id":1,"name":"Kim, Jr."},{"id":2,"name":"이\"민\""}]Output
id,name 1,"Kim, Jr." 2,"이""민"""
Nested objects and missing keys
A nested object becomes a dot path. A key that first appears in a later object is added on the right.
Input
[{"a":{"b":1}},{"c":2}]Output
a.b,c 1, ,2
CSV to JSON (Detect numbers off)
Every value stays a string, so the leading zeros of 007 are kept.
Input
id,zip 1,007
Output
[ { "id": "1", "zip": "007" } ]JSON that is not a table
Input
"text"
Output
This JSON cannot become a CSV table
Examples use the reference cases this tool is tested against.
JSON ↔ CSV Converter: frequently asked questions
Is my input sent to a server?
No. Your input and the result are processed only in this browser and are not stored. Reloading the page clears them.
Why does Korean or Japanese text look broken when I open a CSV in Excel?
Excel assumes a legacy encoding unless the file starts with a UTF-8 byte order mark (BOM). The Download button adds the BOM by default, so the file opens with the text intact. Turn the option off if another program does not expect a BOM.
What JSON can be converted to CSV?
An array of objects, where each object becomes a row. A single object becomes one row. Other shapes, such as a string or an array of numbers, are reported as an error because they have no columns.
How are nested objects and arrays written?
A nested object is spread over columns named with dot paths, such as address.city, or kept in one cell as a JSON string if you choose that option. An array is always written as a JSON string such as ["x","y"].
Why does 007 stay text instead of becoming 7?
CSV has no types, and codes such as postal codes or product numbers lose their leading zeros when read as numbers. Values are read as strings by default. With Detect numbers on, only values that are valid JSON numbers become numbers, and 007 is not one.
Are large numbers changed?
No. Numbers are copied character for character in both directions, so 12345678901234567890 and 1.50 come out exactly as written.
Related tools
How it works · Standards
- Processed in: this browser (your device). Nothing is sent or stored.
- Standards: RFC 4180 · RFC 8259
- Engine: papaparse 5.7.0 (reading CSV) (MIT) · ZEKILO Dev JSON parser and CSV writer (in-house code)
- null and missing values are written as an empty cell. true and false are written as text.
- Values are written as they are. A spreadsheet treats a cell that starts with = as a formula.
- When reading CSV, blank lines are skipped in a table with several columns. A header that is empty or repeated gets a generated name such as field2 or name_1.
- As of 2026.10.03
- Changelog: 2026.10.03 First release