The result is not valid JSON as a whole
There is no enclosing array and no commas between records, so a standard JSON parser will reject the file. It must be read line by line — which is the entire point of the format.
JSON Lines is what bulk loaders, log pipelines and training sets expect: one self-contained JSON object per line, streamable without loading the whole file. This converter turns a CSV into exactly that, with real types rather than strings everywhere.
Reading CSV
Auto-detect reads the first rows and picks the separator that splits them consistently.
Turn off when the file starts straight into data. Columns are then named column_1, column_2, and so on.
Turns "42" into a number and "true" into a boolean. Values with leading zeros stay text so IDs and zip codes survive.
Which worksheet to convert. Filled in once the workbook is read.
Dotted path to the array of records, such as data.items. Leave empty to use the whole document.
Turns {"user":{"id":7}} into a user.id column. Arrays are kept as JSON text.
Pick the encoding the file was written in. Wrong encoding shows up as garbled accents.
Comma-separated words that should become null instead of text.
Writing JSONL
Snappy is the default across Spark, DuckDB and pandas. Gzip is smaller but slower to read.
Turns a user.id column back into {"user":{"id":7}}.
Excel needs a byte order mark to open UTF-8 files with accents correctly.
Rows per row group. Larger groups compress better; smaller groups let readers skip more.
conversion-preroll
This short ad is what keeps the converter free.
Plain text rows that open anywhere, with no types and no schema. One JSON object per line, built for streaming and appending.
| CSV | JSONL | |
|---|---|---|
| Type information | None — every value is text | Strings, numbers, booleans, null |
| Structure | Flat rows and columns | One nested object per line |
| Compression | None | None |
| Typical file size | Baseline (100%) | Slightly under JSON |
| Schema | Header row at best | Implicit, per line |
| Human-readable | Yes, in any text editor | Yes, one record at a time |
| Tool support | Universal | Log pipelines, LLM training sets, BigQuery |
There is no enclosing array and no commas between records, so a standard JSON parser will reject the file. It must be read line by line — which is the entire point of the format.
JSONL is larger than the CSV it came from, because each record carries its own field names. That is the cost of every line being independently parseable.
An empty CSV cell has no way to distinguish "blank" from "missing". It becomes null here. Turn off type detection if you need empty strings preserved as strings.
Newline-delimited JSON is a native BigQuery import format.
JSONL is the standard format for model training data.
A line-based reader can start work immediately rather than waiting for the full file.
sticky-bottomYour file is downloading
post-conversion