JSONL is not valid JSON
A JSONL file cannot be handed to a standard JSON parser as a whole — there is no enclosing array and the lines are not comma-separated. Consumers must read it line by line.
When Parquet data has to go into something that reads a stream of records — a log pipeline, a bulk loader, a training set — JSON Lines is the right target. Every row becomes one line, so the result can be processed without loading the file into memory.
Reading Parquet
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.
Typed, compressed, columnar storage built for analytical scans. One JSON object per line, built for streaming and appending.
| Parquet | JSONL | |
|---|---|---|
| Type information | Full — ints, floats, booleans, timestamps, decimals | Strings, numbers, booleans, null |
| Structure | Columnar, with nested type support | One nested object per line |
| Compression | Built in (Snappy, Gzip, Zstd) | None |
| Typical file size | Typically 5–15% of the CSV | Slightly under JSON |
| Schema | Stored in the file footer | Implicit, per line |
| Human-readable | No — binary | Yes, one record at a time |
| Tool support | Spark, DuckDB, pandas, BigQuery, Athena | Log pipelines, LLM training sets, BigQuery |
A JSONL file cannot be handed to a standard JSON parser as a whole — there is no enclosing array and the lines are not comma-separated. Consumers must read it line by line.
Keys repeat on every line and compression is gone. JSONL is smaller than pretty-printed JSON but still many times the Parquet size.
JSON objects are unordered by specification. Tools that rely on key order in the output are relying on something the format does not promise.
Both accept newline-delimited JSON directly as an import format.
jq, grep and awk all work naturally on one-record-per-line files.
JSONL is the de facto standard for fine-tuning and evaluation datasets.
sticky-bottomYour file is downloading
post-conversion