CSV to JSON
Convert between CSV and JSON and check the result as a table. Nothing you enter is sent to a server.
Loading the tool…
User reviews
No reviews yet. If you’ve used this tool, be the first to leave one.
CSV to JSON: complete guide
Walk through the steps and examples, or jump straight to the topic you need.
At a glance
- Direction
- Supports both CSV to JSON and JSON to CSV.
- Delimiter
- Choose one yourself: comma, tab, semicolon, or pipe.
- Quotes
- Delimiters and line breaks inside quotes are read as text, and two quotes in a row are read as one.
- BOM and CRLF
- The BOM is removed when reading; saved files get a BOM and CRLF line breaks.
- Value format
- By default every value stays as text, which keeps leading zeros.
- Formula protection
- When exporting to CSV, a single quote is added before values starting with = + - @.
- Limits
- Converts up to 500,000 characters, 20,000 rows, and 200 columns.
- Where it runs
- Conversion happens in this browser, and your input is not stored.
How to use CSV to JSON
Pick the direction and delimiter first
Choose between CSV to JSON and JSON to CSV. Changing the direction clears the input and keeps only the options that apply. The delimiter is chosen by you rather than guessed, so if your table is read as a single column, try a different delimiter.
Decide how to treat column names and values
Using the first line as column names gives you an array of objects; turning it off gives you an array of arrays. Empty column names are filled with a position number such as Column 2, and duplicate names get _2 appended to tell them apart. With type conversion off when reading CSV, every value stays as text, so leading zeros in phone numbers and postal codes survive. With it on, 12 becomes a number and true becomes a boolean, but values with a leading zero such as 0102 are still kept as text. You also decide here whether empty cells are exported as null.
Convert and check the table
You can also run it with Ctrl or ⌘ plus Enter. In the table preview below, check that column names and values landed where you expected. It shows up to the first 50 rows and tells you how many rows remain.
Copy or save
Copying the result copies the text exactly as shown. Saving as CSV puts a byte order mark (BOM) at the start of the file and uses CRLF line breaks so Excel doesn't garble non-ASCII text. You can also press convert in reverse to move the result you just made into the input in the opposite direction, which lets you check a round trip.
What it’s good for
Turn a spreadsheet table into data for developers
Paste a table exported as CSV from a spreadsheet, pick a delimiter, and you get a JSON array. If the first line is used as column names, you get an array of { column: value } objects; if you turn that off, you get an array of arrays of values. Values are kept as plain text by default, so leading zeros in phone numbers or postal codes are not lost. If you need numbers and true/false values, turn on the type conversion option.
Turn data into a table a spreadsheet can open
When converting a JSON array to CSV, columns are created in the order keys first appear across the items. Keys missing from an item are left blank, so columns never get misaligned. Nested objects and arrays can be put into one cell as JSON text or flattened into a.b style columns. So that Excel doesn't garble non-ASCII text, the saved file includes a byte order mark (BOM) and uses CRLF line breaks.
Worked examples
Reading a table with a comma inside a value
name,note,phone
Haneul,"Seoul, Gangnam",01012345678[
{
"name": "Haneul",
"note": "Seoul, Gangnam",
"phone": "01012345678"
}
]Exporting data that has nested values
[{"name":"Haneul","address":{"city":"Seoul","district":"Yeoksam"}},{"name":"Bada"}]Insert as JSON text
name,address
Haneul,"{""city"":""Seoul"",""district"":""Yeoksam""}"
Bada,
Flatten into a.b columns
name,address.city,address.district
Haneul,Seoul,Yeoksam
Bada,,Choosing export options
Swipe the table sideways to see the rest.
| Option | On | Off |
|---|---|---|
| Byte order mark for Excel (BOM) | Excel does not garble non-ASCII text. | You get a plain UTF-8 file with no mark. |
| Formula protection | A single quote is added before values starting with = + - @. | Values go out unchanged, and a spreadsheet may run them as formulas. |
| Nested values | Put into one cell as JSON text, or flattened into a.b columns. | Not applicable. You must choose one of the two. |
When the result isn’t what you expected
The whole table is read as a single column
The delimiter you chose differs from the one in the actual file. Excel often exports with semicolons depending on regional settings, and text copied from a spreadsheet is usually tab-separated. Change the delimiter and convert again.
It says a quote was not closed
A quoted cell never ended. The message also tells you which line to start from, so count the quotes from that line. A quote inside a value must be written twice.
It says the outermost level must be an array
To convert JSON to CSV, the items that correspond to table rows must be wrapped in an array. If you have just one { … }, wrap it in brackets like [ { … } ].
A single quote was added in front of a value
This mark is added so a spreadsheet does not run a value starting with = + - @ as a formula. The number of cells changed is shown below the result. If you don't need it, turn the option off and convert again.
Rows have different numbers of cells
Rows with too few cells are padded with empty values, and rows with more cells than the first line get generated names such as Column 3 so the values are kept. No value is dropped, and you are told how many were handled this way.
Key terms
- Delimiter
- The character that separates cells. A comma is the most common, and some regional settings use a semicolon.
- BOM
- A character mark at the start of a file. It lets Excel read non-ASCII text as UTF-8.
- CRLF
- A way of writing a line break with two characters. Windows programs mostly use it.
- Formula injection
- The problem of a table value being executed as a formula in a spreadsheet. It is prevented by adding a single quote before the value.
CSV to JSON FAQ
Can a quoted cell contain commas or line breaks?
Yes. Inside a quoted cell, delimiters and line breaks are read as ordinary characters, and two quotes in a row are read as one quote. If a quote is never closed, the tool tells you which line to start checking from.
Why is there a single quote in front of some values?
Values starting with = + - @ can be executed as formulas in Excel or Google Sheets. So when exporting to CSV, a single quote is added only in front of such values, and the tool tells you how many cells were changed. If you don't need this, turn the option off.
What happens if rows have different numbers of cells?
Rows with too few cells are padded with empty values, and rows with more cells than the first line get generated names such as Column 3 so no value is lost. In both cases, the number of rows handled this way is shown below the result.
Can I feed in an Excel file (xlsx) directly?
No. Export it from Excel as CSV and paste the contents. This tool only handles text-based CSV and JSON.
If I convert and then convert back, are the values unchanged?
With default settings, an automated test confirms that a round trip between CSV and JSON keeps values unchanged. However, with formula protection on, the added single quote stays as part of the value, so turn that option off if you only want to check a round trip.
How large a file can it handle?
Up to 500,000 characters, 20,000 rows, and 200 columns. If you go over, it tells you the current size, and you can convert in smaller parts.
Is my data sent to a server?
No. Conversion happens inside this browser, and neither the input nor the result is stored.