JSONL Resources
Curated collection of tools, libraries, and community resources for JSON Lines
Every library and tool below carries a maintenance status and the version and year of its most recent release, last verified 07-25-2026. Status describes upkeep, not quality: a small, finished library can sit at "Maintained" for years and still be the right answer.
Official Resources
JSONLines.org
Reference specThe format definition itself, in four short rules. Cite this when a code review turns into an argument about what is and is not valid JSONL.
NDJSON GitHub Organization
Dormant - last activity 2022Worth visiting for ndjson-spec, which is still the clearest statement of the NDJSON variant. Treat the code repositories under it as historical - none has been touched since 2022.
Recommended Books
Fundamentals of Data Engineering
Learn how to plan and build data systems to serve your needs
Designing Data-Intensive Applications
The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Data Pipelines Pocket Reference
Moving and Processing Data for Analytics
AI Engineering Foundation Models
Building Applications with Foundation Models
Libraries & Parsers
Python
jsonlines
Maintained - 4.0.0 (2023)Pick this when you need errors you can act on: the reader reports the line number and the raw text of any line that fails to parse, instead of a bare traceback. Python 3.8 and newer.
orjsonl
Maintained - 1.0.0 (2023)Pick this when your files arrive compressed: it reads and writes gzip, bzip2 and zstd JSONL directly, with orjson doing the parsing underneath.
orjson
Active - 3.11.9 (2026)Pick this when profiling shows serialization is the bottleneck: it is the fastest Python JSON encoder and handles dataclasses, datetimes and numpy arrays without a custom encoder.
JavaScript / Node.js
readline (Node built-in)
Built in - ships with NodeStart here. createInterface with crlfDelay set to Infinity streams a file one line at a time, and JSON.parse on each line is the rest of the implementation. No dependency, no abandoned package to inherit.
ndjson
Dormant - 2.0.0 (2020)Only worth adding if you are already composing Node stream transforms and want a ready-made parse and stringify pair. It has not published a release since 2020, so treat it as frozen rather than supported.
Go
encoding/json
Built in - Go stdlibPick the standard library and stop looking: json.Decoder over a bufio.Reader pulls one value per line without loading the file. A v2 package now sits alongside it with stricter defaults, and the v1 docs explain every behavior difference.
gojq
Active - v0.12.19 (2026)Pick this when you want users to supply jq expressions to your Go program: it is a library first and a binary second, pure Go, no cgo.
Ruby
JSON (stdlib)
Built in - Ruby stdlibThe honest recommendation for Ruby: File.foreach over the file and JSON.parse on each line is the whole job. There is no maintained JSONL gem that earns the dependency.
Oj
Active - 3.17.4 (2026)Pick this when the stdlib parser is measurably too slow: a C extension with a compatibility mode that drops in for JSON, plus a stream mode that reads many documents from a single handle.
Java
Jackson
Active - 3.2 (2026)Start here for JVM work: readValues() hands back a MappingIterator that pulls one object per line straight off the stream. This link is the project hub, which points at the module you actually add - jackson-databind for most code.
Gson
Maintenance mode - 2.14.0 (2026)Fine to keep if you already depend on it, and JsonReader streams line by line perfectly well. Google's own README states Gson is in maintenance mode and large new features are unlikely, so reach for Jackson in new code.
Rust
serde_json
Active - 1.0.151 (2026)The default, and there is no real second choice. StreamDeserializer reads a sequence of whitespace-separated values, which is exactly what a JSONL file already is - no line splitting required.
jaq
Active - 3.1.0 (2026)Pick this when you want jq syntax embedded in a Rust program: jaq-core is the interpreter on its own, without the CLI wrapper around it.
Command Line Tools
jq
Active - 1.8.2 (2026)The default, and the one everyone else is compared against. It already reads a stream of JSON values, so a JSONL file needs no special flag, and -c writes JSONL back out.
jaq
Active - 3.1.0 (2026)Pick this when start-up cost dominates, such as invoking the tool once per file in a loop. The project publishes its own benchmark table, which reports jaq fastest on 20 of the 31 cases it measures against jq 1.8.1 and gojq 0.12.18.
gojq
Active - v0.12.19 (2026)Pick this for clearer error messages, YAML input, and arbitrary-precision integers - jq silently rounds large IDs, gojq keeps them intact.
fx
Maintained - 39.2.0 (2025)Pick this when you need to look at unfamiliar data rather than transform it: an interactive viewer that folds, searches and filters a large JSONL file in the terminal.
qsv
Active - 21.1.0 (2026)Pick this when you are moving between CSV and JSONL: it indexes, joins, validates and profiles files far larger than memory. The maintained successor to xsv.
Miller (mlr)
Active - 6.20.2 (2026)Pick this when your records are name-indexed and you want awk-style verbs instead of a query language. One command converts JSONL to CSV, TSV or pretty JSON.
AI & Machine Learning
Every major AI platform takes fine-tuning data as JSONL, one training example per line. Vendor documentation moves often, so each link below is checked against the page that actually specifies the format.
OpenAI Fine-Tuning
Current - 2026Start here for the supervised fine-tuning file format: one JSONL line per example, each holding a messages array. The old platform.openai.com guide now redirects to this page.
Anthropic Claude Fine-Tuning
Amazon Bedrock onlyAnthropic's glossary states plainly that the Claude API does not currently offer fine-tuning, so this walkthrough runs it on Amazon Bedrock. Each JSONL line is one object with an optional system field and a messages array.
Google Gemini Fine-Tuning
Current - 2026The data-preparation page rather than the tuning overview, because this is where the JSONL schema, the example counts and the validation-split rules actually live.
Hugging Face Datasets
Active - 5.0.0 (2026)The practical default for wrangling training data before it reaches a trainer: load_dataset with the json builder reads JSONL directly and can stream it without unpacking to disk.
Mistral Fine-Tuning
Deprecated - 2026Mistral moved this guide into its deprecated section and marks the feature as no longer actively supported. Still the clearest description of its JSONL messages schema, but do not start anything new on it.
TensorFlow Datasets
Maintenance - 4.9.10 (2026)Only worth the dependency if you are already inside TensorFlow and want tf.data pipelines for free. Releases are maintenance-level now, and Hugging Face Datasets above covers the same ground with far more momentum.
Data Processing & Databases
Polars
Active - 1.43 (2026)Pick this over Pandas when the file is bigger than comfortable: scan_ndjson() builds a lazy query and pushes filters down, so it never loads the whole file.
Pandas
Active - 3.0.5 (2026)Pick this when the surrounding code is already Pandas: read_json with lines set to true, plus chunksize, gives you an iterator of DataFrames when the file will not fit in RAM.
DuckDB
Active - 1.5.5 (2026)Pick this when you would rather write SQL than code: it queries a JSONL file in place, with no import step, no schema declaration and no server to run.
ClickHouse
Active - 26.5 (2026)Pick this when JSONL arrives continuously rather than as a one-off file: JSONEachRow ingests it natively, and this guide covers both fixed schemas and the dynamic JSON column type.
Apache Spark
Active - 4.2.0 (2026)Pick this when one machine is genuinely not enough. JSONL is Spark's native JSON input shape, so files split cleanly across the cluster on line boundaries.
Apache Arrow
Active - 25.0.0 (2026)Pick this when the destination is columnar: its JSON reader parses line-delimited input straight into Arrow tables, which is the shortest path from JSONL to Parquet.
Community & Learning
Stack Overflow
Stack Overflow has no 'jsonl' tag - the answers live under 'jsonlines', with a sibling 'ndjson' tag covering the same ground.
r/dataengineering
Where format decisions get argued out with real numbers - the place to go for the "JSONL or Parquet" question that has no single right answer.
GitHub Topics: JSONL
Sorted by stars, the fastest way to find a maintained JSONL library for a language not covered above.