Validate or convert JSONL

One JSON object per line is great until line 4,317 is broken — find every bad line at once.

Tools used in this guide

The job

JSON Lines is the format of logs and datasets: each line a complete JSON value. Most parsers die on the first bad line and tell you nothing about the rest — validation here lists every failure.

Three modes

Validate reports each broken line with its parse error; JSONL→JSON wraps the lines into an array; JSON→JSONL unwraps an array to lines.

Worked example

Six lines where line 3 is {"a": 1,} reports 'line 3: unexpected token' while still parsing lines 1,2,4,5,6 — you fix one line instead of bisecting a file.

Where it stops

100,000 lines / 2 MB of input. Each line must be complete JSON — pretty-printed multi-line objects belong in JSON, not JSONL.