JSON to CSV and CSV to JSON converter
Convert a JSON array of objects to CSV, or CSV to JSON. Choose the delimiter and header row, and save CSV with a BOM for Excel.
Adds ' in front of cells that start with =, +, -, @, tab or CR. This changes values, so leave it off for data exchange. Plain numbers such as -5 are left as they are.
Off: every value is a string. On: values with leading zeros (007), very large integers, and numbers that would be rewritten (1.50, 1e3) still stay strings.
Turn this on if text looks garbled when opened in Excel. Copied text never includes the BOM.
How to use
- Choose the direction: JSON → CSV or CSV → JSON.
- Paste your data and choose the delimiter and whether there is a header row.
- Set the options you need (formula protection, number conversion) and press "Convert".
- Copy the result or download it. If you will open the CSV in Excel, turn on "Save as UTF-8 with BOM".
Notes and limits
- Input up to 5 MB. UTF-8 only.
- JSON → CSV expects an array of objects. A single object becomes one row. Other shapes (arrays of arrays, plain strings and so on) are reported as errors.
- Nested objects and arrays are not flattened. They are written into one cell as JSON text.
- JSON null becomes an empty cell, true/false become the text true/false, and numbers are written exactly as in the input (1.0 stays 1.0). A round trip JSON → CSV → JSON therefore does not restore types (numbers, booleans, null).
- In CSV → JSON, rows with fewer fields than the header get empty strings, and extra fields are kept under keys such as column3 (the count is shown). Empty header names become columnN, and repeated names become name_2.
- Completely empty lines are skipped. Line breaks pasted into the input box become LF (browser behavior), including inside quoted fields.
How it works
CSV follows RFC 4180. Fields containing the delimiter, a double quote or a line break (CR or LF) are wrapped in double quotes, and quotes inside are doubled. Output lines end with CRLF.
The header row lists every key from all objects in the order they first appear. If an object repeats a key, its last value is used.
CSV → JSON keeps every value as a string by default, so postal codes, phone numbers, IDs with leading zeros and long numbers are never changed. With "Convert numbers, true/false and null" on, only true, false, null and decimal numbers that read back exactly the same (and are safe integers) are converted.
"Make safe for spreadsheets" adds an apostrophe in front of cells that start with =, +, -, @, tab or CR so a spreadsheet does not run them as formulas (CSV injection). Because it changes the values, it is off by default. Cells that are just a number, such as -5 or +81, are not changed.
FAQ
Text looks garbled when I open the CSV in Excel.
Download again with "Save as UTF-8 with BOM (for Excel)" turned on. Excel may not detect UTF-8 in a CSV without a BOM.
Do leading zeros survive?
Yes. CSV → JSON keeps values as strings, so 007 stays 007. If zeros disappear in Excel, import the column as text there.
Can nested JSON be flattened into columns?
No. Nested parts go into a single cell as JSON text. There is no standard way to name flattened columns, and flattening cannot be reversed reliably.
Is my data uploaded?
No. Conversion runs entirely in your browser, and nothing you enter is stored or sent.
Related guides
- How to find and fix JSON errors, then format JSONThe JSON mistakes that break parsers most often — quotes, commas, comments, True/False — how to locate them, and how to format, minify and inspect JSON.
Related tools
Last updated: