JSON Lines
JSON Lines — also written NDJSON — is one complete JSON object per line. It is barely a format at all, which is exactly why it works so well for streams.
- Type information
- Strings, numbers, booleans, null
- Structure
- One nested object per line
- Compression
- None
- Typical file size
- Slightly under JSON
- Schema
- Implicit, per line
- Human-readable
- Yes, one record at a time
- Tool support
- Log pipelines, LLM training sets, BigQuery
JSONLParquet
Runs on your deviceOptions
Reading JSONL
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 Parquet
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.
The entire specification fits in a sentence: each line is a valid JSON value, and lines are separated by newlines. There is no enclosing array and no commas between records. That means a reader can process line one without having seen line two, and a writer can append a record by writing a line — neither of which is possible with a JSON array.
This is why it dominates anywhere data arrives continuously: application logs, event streams, message queue dumps, and the export format of most analytics platforms. It is also the standard shape for machine learning datasets, where each line is one training example.
The cost is size and rigidity. Field names repeat on every line, so the file is larger than the equivalent CSV, and a standard JSON parser will reject the file outright because it is a sequence of documents rather than one. For analysis rather than transport, converting to Parquet is usually the right next step.
What JSONL is good at
- Streams: a consumer can start work on the first line immediately.
- Appends cheaply — no file rewrite needed to add a record.
- One corrupt line does not invalidate the rest of the file.
- Works naturally with line-based tools such as jq, grep and awk.
Where it falls short
- Not valid JSON as a whole document.
- Keys repeat on every line, so files are larger than tabular equivalents.
- No schema, and fields commonly drift over time.
- No compression of its own.
Convert JSONL files
From JSONL
To JSONL