How it works
- 01
Load or paste CSV
The delimiter, quote character and header row are detected, and you can override any of them.
- 02
Check the table
The table shows exactly how the file was read. Rows that do not match the header are flagged before you convert.
- 03
Copy or download
Array of objects, array of arrays, keyed object, or JSON Lines for streaming.
Type inference and why it can bite
With Infer numbers & booleans on, cells that look like numbers or booleans become JSON numbers and booleans instead of strings. That is usually what you want, but not always. Postcodes, phone numbers, product codes and IDs lose their leading zeros when read as numbers, and identifiers past 2^53 lose precision. Turn it off when a column holds identifiers, not quantities.
CSV cannot tell an empty string from a missing value. By default an empty cell stays an empty string, and Empty cell → null turns it into null instead. Dates stay strings, because no CSV convention marks one, and guessing between day-first and month-first order would corrupt data without warning.
- Input
- CSV, TSV, and semicolon- or pipe-delimited UTF-8 text.
- File size
- No cap. Past 200,000 characters, press Convert and a worker parses it.
- Output shapes
- Array of objects, array of arrays, keyed object, JSON Lines.
- Quoting
- RFC 4180: quoted fields may contain delimiters, newlines and escaped quotes.
Output shapes
Array of objects
[{"id":1,"name":"Northwind Ltd"}, ...]The default. Best for APIs and most libraries.
Array of arrays
[["id","name"],[1,"Northwind Ltd"], ...]Compact, keeps column order, no repeated keys.
Keyed object
{"1":{"name":"Northwind Ltd"}, ...}Keyed by the first column, for lookups.
JSON Lines
{"id":1}
{"id":2, ...}One object per line, for streaming and log pipelines.