Pretty-printing is dropped by necessity
Each record must occupy exactly one line, so indentation and line breaks inside records are removed. The data is unchanged; only the whitespace is.
A JSON array has to be parsed in full before you can touch the first record. JSON Lines does not. This converter unwraps the array and writes each record on its own line, which is what bulk loaders and streaming consumers want.
Reading JSON
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.
Nested, self-describing records that every language can read. One JSON object per line, built for streaming and appending.
| JSON | JSONL | |
|---|---|---|
| Type information | Strings, numbers, booleans, null | Strings, numbers, booleans, null |
| Structure | Nested objects and arrays | One nested object per line |
| Compression | None | None |
| Typical file size | Largest — keys repeat on every record | Slightly under JSON |
| Schema | Implicit, per record | Implicit, per line |
| Human-readable | Yes, though verbose | Yes, one record at a time |
| Tool support | Every language, natively | Log pipelines, LLM training sets, BigQuery |
Each record must occupy exactly one line, so indentation and line breaks inside records are removed. The data is unchanged; only the whitespace is.
If the input is one object rather than an array, the output is one line. That is valid JSONL, if a short file.
Unlike conversions to tabular formats, nested objects stay nested here — JSONL can represent them natively. Flattening is opt-in.
BigQuery, Elasticsearch and many warehouse loaders take newline-delimited JSON directly.
Line-based tools can stream a JSONL file that would not fit in memory as a single array.
New records can be appended to a JSONL file without rewriting it. A JSON array cannot be appended to without editing the closing bracket.
sticky-bottomYour file is downloading
post-conversion