twilight ventures

read a JSONL or NDJSON file in the editor

Open a .jsonl file of any real size in a text editor and you get a wall of lines and a scroll bar that has stopped meaning anything. JSON Lines is one JSON document per line, the shape almost every export, log shipper and data pipeline emits. There is no outer array, so nothing in the file says how many records are in it.

in a jetbrains ide

In a JetBrains IDE, install JSONL Lens from the JetBrains Marketplace. It runs in IntelliJ IDEA, PyCharm and every other JetBrains IDE on 2024.2 or newer, Android Studio from Ladybug. A .jsonl or .ndjson file then gets a JSONL Lens tab beside the regular text editor, which stays the tab that opens first; plain .json is never claimed. Records are indexed in the background by byte offset and read as you page, so the first screen is up before the index has finished, whatever the size of the file. We benchmark that index on a file of more than 1 GB the test suite writes for itself.

The grid puts records in rows and fields in columns, flattens a nested object into dot-path columns such as meta.source, and shows a value that is itself an object as one-line JSON in its cell. Ctrl+F searches every record for a word or a regular expression, and Matches only pages through the hits alone.

JSONL Lens in IntelliJ IDEA: a grid of records with the selected record pretty-printed underneath
checkout-events.jsonl as a grid: fields as columns, the selected record pretty-printed underneath, page 1 of 24.

in vs code

In VS Code the job is the same and the steps differ. Install JSONL Lens for VS Code from Open VSX or the Visual Studio Marketplace, then pick it as the Open With choice on a .jsonl or .ndjson file, or run Open in JSONL Lens. Records are indexed by byte offset in one pass, and what stays in memory is the list of offsets rather than the file, so a 1.02 GB file of 5,000,000 records is on screen while its index builds, 3.7 s for that file. Ctrl+G puts the cursor in the go-to-row box.

The JSONL Lens schema tab in VS Code: per-field counts, types and examples from a sample of the file
The schema tab: 2,000 sampled records, present, missing and null counts per field, Full scan (Pro) for the exact numbers.

free, and what Pro adds

Reading is free. The JetBrains plugin makes no network calls, and the VS Code extension keeps no account and no telemetry. The two paid tiers work differently, so check which one you are buying: the JetBrains plugin is a subscription with a 30-day trial, while the VS Code extension takes one key bought once, after a 14-day trial on each machine, and the same key also unlocks Parquet Lens for VS Code, pasted into each extension you use. Pro on both sides adds whole-file filter queries and exports, plus exact stats read over every record instead of a sample. Each product page lists both tiers and quotes the price as the store shows it.

Bad lines, blank lines, CRLF endings and oversized records are reported rather than rewritten. The file still opens.