CSV to JSON converter
Paste CSV, or a sheet exported as CSV or TSV, and get JSON. Quoted fields with commas, quotes and line breaks are handled the way RFC 4180 describes. Everything stays in this tab.
tool 19 of 21 []
all shortcuts ?
How to use it
- Paste CSV into the left pane. The delimiter is detected from the first lines (comma, semicolon, tab or pipe); choose one yourself if the guess is wrong.
- With a header row, each record becomes an object keyed by column name. Turn the header off, or choose array of arrays, to keep rows as plain lists.
- Tick the typing option to turn 42 and 3.5 into numbers, true and false into booleans and empty cells into null. Values with leading zeros, such as ZIP codes, and integers too large to be exact stay strings.
- Rows with a different number of fields than the header are converted anyway and listed under the output, so ragged exports do not fail silently.
What RFC 4180 does and does not say
RFC 4180 is the closest thing CSV has to a standard. Fields are separated by commas and records by CRLF line breaks. A field that contains a comma, a double quote or a line break must be wrapped in double quotes, and a double quote inside it is written twice. The first record may be a header. That is all; the RFC is informational and many real files differ from it.
The common differences are the delimiter (spreadsheets in locales that use a decimal comma write semicolons), line endings (LF or a lone CR), a UTF-8 byte order mark at the start of the file, and ragged rows. This converter accepts all of those and reports where a row has a different length instead of guessing.
CSV has no types: every field is text. Turning 007 into the number 7 loses data, and so does turning an 18-digit ID into a floating point number. The typing option therefore only converts values that are exact as JSON numbers, and the number is written in its shortest form: 3.50 becomes 3.5, -0 becomes 0 and 1e5 becomes 100000. RFC 8259 makes the same point for JSON: integers beyond 2^53 are not exact in many parsers, so they are safer as strings.
How fields are read
| CSV field | Text value | With typing on |
|---|---|---|
42 | "42" | 42 |
3.50 | "3.50" | 3.5 |
007 | "007" | "007" (leading zero kept) |
12345678901234567890 | "12345678901234567890" | unchanged string (too large to be exact) |
true | "true" | true |
| (empty) | "" | null |
"a,b" | "a,b" | "a,b" |
"say ""hi""" | "say \"hi\"" | unchanged string |
Each row is checked by this tool's test suite, which also round-trips random data through the JSON to CSV converter and back.
Examples
Select an example to load it into the tool.
- Simple
id,name,active ↵ 1,Ada,true ↵ 2,Lin,false - Quoted fields
name,quote ↵ "Lovelace, Ada","She said ""hello""" ↵ Lin,"two ↵ lines" - Semicolon (Excel EU)
Artikel;Preis ↵ Kaffee;3,50 ↵ Tee;2,80 - Tab separated
zip city ↵ 02134 Boston ↵ 10001 New York
Frequently asked questions
How do I convert an Excel sheet to JSON?
Save or export the sheet as CSV (or copy the cells, which pastes as tab-separated text) and paste it here. The delimiter is detected, and the first row becomes the keys.
Why did my numbers stay strings?
Typing is off by default because CSV has no types. Turn it on to convert plain numbers. Values with leading zeros and integers beyond 2^53 stay strings on purpose, because converting them would change the value.
What happens with duplicate or empty column names?
Empty headers become column1, column2 and so on, and repeated names get a suffix such as name_2, so no column is silently overwritten. Each rename is listed under the output.
How large a file can it handle?
Up to 20 MB of text. Parsing runs in your browser, so very large files depend on available memory.
Is anything uploaded?
No. The conversion happens in this tab. The test suite fails the build if this tool contains a network call.
Sources
- RFC 4180: Common Format and MIME Type for CSV Files checked 2026-10-21
- RFC 8259: The JSON Data Interchange Format (numbers and interoperability) checked 2026-10-21
- W3C Model for Tabular Data and Metadata on the Web checked 2026-10-21