Convert Parquet to JSONL

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.

  • Runs in your browser
  • No signup
  • No upload
  • Free

ParquetJSONL

Runs on your device
Options

Reading Parquet

Writing JSONL

Inspecting Parquet records by eye?Query Parquet without exporting with ParquetReader — opens Parquet files directly.
What happens

How this converter handles Parquet to JSONL

  1. Decompresses the Parquet row groups and reads them into records.
  2. Writes exactly one JSON object per line, with no wrapping array and no pretty-printing.
  3. Converts timestamps to ISO-8601 and oversized integers to strings so no precision is lost.
  4. Can rebuild nested objects from dotted column names if the downstream consumer expects structure.
Format differences

Parquet vs JSONL

Typed, compressed, columnar storage built for analytical scans. One JSON object per line, built for streaming and appending.

ParquetJSONL
Type informationFull — ints, floats, booleans, timestamps, decimalsStrings, numbers, booleans, null
StructureColumnar, with nested type supportOne nested object per line
CompressionBuilt in (Snappy, Gzip, Zstd)None
Typical file sizeTypically 5–15% of the CSVSlightly under JSON
SchemaStored in the file footerImplicit, per line
Human-readableNo — binaryYes, one record at a time
Tool supportSpark, DuckDB, pandas, BigQuery, AthenaLog pipelines, LLM training sets, BigQuery
Worth knowing

What to watch out for

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.

The file grows substantially

Keys repeat on every line and compression is gone. JSONL is smaller than pretty-printed JSON but still many times the Parquet size.

Column order is not guaranteed to matter

JSON objects are unordered by specification. Tools that rely on key order in the output are relying on something the format does not promise.

When you need this

Common reasons to convert Parquet to JSONL

Bulk loading into BigQuery or Elasticsearch

Both accept newline-delimited JSON directly as an import format.

Streaming through command line tools

jq, grep and awk all work naturally on one-record-per-line files.

Building datasets for model training

JSONL is the de facto standard for fine-tuning and evaluation datasets.

FAQ

Parquet to JSONL questions

Is my Parquet file uploaded?
No. The conversion runs in your browser using WebAssembly and JavaScript. The file is read from your disk into a Web Worker, converted in memory, and handed back as a download. It is never sent to a server, so there is nothing for us to store, log or leak.
Should I pick JSONL or JSON?
JSONL for pipelines, imports and anything large, because it streams. JSON for a document you will open in an editor or send to an API expecting a single payload.
Does the output end with a newline?
Yes. A trailing newline after the final record is the convention, and most line-based readers expect it.
Can I get nested objects rather than dotted keys?
Yes — enable "Rebuild nested objects" in the output options.
Which codecs can be read?
Snappy, Gzip, Zstd, Brotli, LZ4 and uncompressed. Encrypted files are not supported.