JSON and CSV Converter
- Paste JSON that is a list — the conversion requires an array at the outermost level.
- Adjust the delimiter. Comma is the international default; semicolon is often needed to open the file in a European or Brazilian Excel.
- Leave the header option on so the first row carries the column names.
- Copy the finished CSV or save it to a file.
CSV is a table: rows and columns, with no hierarchy. That is why the input must be an array. A bare object at the outer level is rejected with an explicit warning rather than producing a malformed CSV.
The ideal case is a list of objects sharing the same keys — each object becomes a row and each key becomes a column.
If the objects have different keys, the columns are the union of them all, and each row fills only the ones it has.
Nested values, such as an object or array inside a field, have no natural representation in CSV. Flatten the structure before converting if that data matters.
The comma is the format default — the C in CSV comes from it.
In locales that use the comma as a decimal separator, Excel expects a semicolon instead. A comma-delimited CSV opens with everything crammed into a single column.
Tab is a useful third option when the data frequently contains both commas and semicolons.
Fields containing the delimiter, quotes or line breaks are automatically wrapped in quotes, as the format requires.
The conversion happens entirely in your browser. None of the pasted JSON is sent to a server or logged.
- Paste the CSV content.
- Adjust the delimiter if the file does not use a comma — semicolon is common in locales where the comma is already the decimal separator.
- Keep the header option on if the first row holds the column names: the JSON comes out as a list of objects. With it off, it comes out as a list of lists.
- Choose whether you want the JSON formatted or compact.
Empty lines are ignored, which avoids a null object at the end of the file — a frequent problem in CSV exported from a spreadsheet.
Values are converted by type where possible: 42 becomes a number, true becomes a boolean, and everything else stays text. That saves a processing step, but it is worth knowing the side effect described below.
Quoted fields containing commas, line breaks or escaped quotes inside are handled according to the format specification.
Type conversion is convenient until it meets data that only looks numeric. A postal code such as 01310 becomes 1310, losing the leading zero. A long document number becomes a number and loses precision by exceeding the JavaScript safe integer limit.
The rule of thumb: if the column is an identifier — document number, product code, phone, postal code — the value should stay as text.
When the data matters, check the generated JSON before using it. Scientific notation in the result is a clear sign that a long identifier was treated as a number.
The conversion happens entirely in your browser. No row of the CSV is sent to a server or logged.
That is what makes it safe to convert a customer base export, a financial report or any spreadsheet holding personal data.
Frequently asked questions
Wrap it in brackets to make it a one-item list, or extract the array from inside it. CSV represents a table, and a table needs rows.
Excel in some locales expects a semicolon as the separator. Generate it again with that delimiter, or use the Excel data import and choose the comma manually.
There is no natural representation in CSV. Flatten the structure first — turning customer.name into its own column, for example.
The field is automatically wrapped in quotes, as the format prescribes. Quotes inside the value are doubled.
No. Everything is converted in your browser.
Yes, just adjust the delimiter. Spreadsheets in many locales export with semicolons because the comma already serves as the decimal separator.
Because automatic type conversion read the column as a number. Identifiers should stay as text — if you can, export the column already quoted at the source.
With a header, each row becomes an object whose keys come from the first line. Without one, each row becomes a list of values in the original order.
It works, as long as the field is quoted, as the format requires. Quotes inside the field must be doubled.
No. Everything is processed in the browser and nothing is stored.