CSV to JSON
Convert a spreadsheet export into JSON with a parser that follows RFC 4180: quoted fields, doubled quotes, commas and line breaks inside a cell, and CRLF endings. The delimiter is detected when you do not name one, and every value stays a string, because 007 is not the number seven.
Detection counts separators in the first few records, ignoring anything inside quotes.
Turn this off and columns are named column_1, column_2 and so on.
Removes leading and trailing spaces from every cell. Leading spaces in a header are usually accidental, but they may not be.
How csv to json works
- Paste the CSVStraight from a spreadsheet, an export or a log file.
- Check the delimiterDetection is the default and is shown in the results, so you can confirm it picked what you expected.
- Take the JSONAn array of objects, ready to download, with warnings listed for anything unusual in the file.
What you get
Parse CSV properly, quotes and embedded newlines included. Everything happens inside this page: the file is read by your browser, transformed in memory and handed straight back to you as a download. There is no upload queue, no waiting for a server, and nothing left behind when you close the tab.
Supported formats
This tool works on text you paste or type, so there is no file format to worry about. Nothing you type is sent anywhere.
Limitations, stated up front
- A quoted field that is never closed is accepted to the end of the file, which is what spreadsheet applications do, and Furtu warns when it happens.
- Blank lines in the middle of a file become records of one empty field rather than being skipped, because skipping them would move every row index.
- No type inference, no date parsing, and no attempt to interpret quoting styles other than RFC 4180.
Frequently asked questions
Why not split on commas?
Because a comma inside a quoted cell is data, not a separator. A line like Doe,"London, UK",31 silently becomes three columns instead of two with split, and every column after it is wrong as well. The same applies to a cell containing a line break, which is legal and which plenty of exports produce.
Why are all the values strings?
Because guessing is worse than being honest. "007" as a number becomes 7 and loses its leading zeros; "1e5" becomes 100000; a postcode becomes a number. Everything stays text and you decide the types, which is the same rule every serious CSV importer uses.
What happens when a row is the wrong length?
A short row is padded with empty strings. A long row keeps its extra cells under column_5, column_6 and so on, and Furtu tells you it happened. Discarding the extras loses data; guessing which column they belong to would be a guess.
What about duplicate or empty header names?
The later one is suffixed to _2, and an empty header becomes column_3. Both are reported. Every header name has to be unique for it to become a key, and an empty string is a poor key to hand to anything downstream.
Is my CSV file uploaded?
No. It is parsed in your browser. A CSV of customers is exactly the kind of file that should never touch a third-party server, and this one never does.