twilight ventures

jsonl lens

JetBrains Marketplaceplugin 33397free viewer, Pro subscription

Install from the JetBrains Marketplacefree to read; the Pro trial runs 30 days

The lines past the first screen have never been read. Here is a lantern for them, one record at a time: the first page of an export is lit before its last line has been counted.

JSONL Lens opens a .jsonl file in place, in IntelliJ IDEA and the other JetBrains IDEs. The 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. Find looks for a word or a regular expression anywhere in a record, over every record in the file. The grid shows the records as rows with the nested fields flattened into columns of their own, and the schema tab sums up a sample. With Pro, a filter on named fields keeps only the records whose values satisfy it, scanned across the whole file, and the page or the matches go out as JSONL, CSV or Parquet. We benchmark the index on a file of more than 1 GB that the test suite writes for itself.

opens
.jsonl, .ndjson, .ldjson and .jsonlines files, and their .gz forms; never plain .json, and a file too large for the text editor opens on the JSONL Lens tab first, the rest beside it
runs on
IntelliJ IDEA, PyCharm and every JetBrains IDE from 2024.2 on, with no upper build
store
JetBrains Marketplace, plugin 33397
newest version
2.0.0, published 2026-10-27
pro
a subscription with its own 30-day trial; the price is quoted below as the store shows it
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.

free

  • Any size: a streaming line index with progress; browse records while it runs, and page to the last line with no record cap
  • Find in file: full-text search across every record, or a regular expression, with a case toggle, next and previous hit, highlighted hits and a matches-only mode that pages through the hits alone
  • Record browser: a paged table with raw and pretty-printed views and a jump to any record number
  • Grid view: records as rows and fields as columns, a nested object flattened into dot-path columns, a nested value shown as one-line JSON in its cell
  • Schema stats: field names, types, null and missing rates, min, max and average for numbers, distinct counts, computed on a labeled sample of the first 1000 and 1000 random records
  • Compressed files: a .jsonl.gz written in blocks is read in place with no temp copy; any other .jsonl.gz is decompressed to a temporary file, with the temp space it needs named first
  • Encodings: EUC-KR, Shift_JIS and the Polish code pages detected on open, with an Encoding menu to switch by hand
  • Malformed input: bad lines, blank lines, CRLF endings and oversized records are reported, and the file still opens
  • Themes: twelve looks for the record table; trying one is free for the open window

pro

  • Saving edits: with Edit on, a record is changed in the detail pane and staged; Review lists each staged record beside the line in the file, Save (Pro) rewrites those lines in place and leaves every other byte as it was, with a copy beside the file when you ask for one; Undo last save (Pro) takes a save of changed records back until the file is closed or reloaded
  • Filter queries: keep only the records where fields match, for example lang == "en" && score >= 0.5, scanned across the whole file, then browse just the matches
  • Export: write the current page, the search matches or the filter matches to a new .jsonl, CSV or Parquet file; in Parquet a nested value lands as a JSON text column
  • Full-file stats: exact schema stats over every record, not a sample
  • Kept themes: a chosen look stays set from file to file

price, as the store shows it

The viewer is free and stays free. Pro is a subscription for this plugin: USD 1.90 a month or USD 19 a year for individual use. For organizations it is, per user, USD 3.90 a month or USD 39 a year.

where it stops

JSONL Lens with Matches only on: the records that carry the search term, paged on their own
Find with Matches only: the 44 records that carry "timed out", paged on their own, record 53 selected.

what's new

more

Pricing, invoices and licensing questions go to sales@twilightventures.dev; anything else about the product to support@twilightventures.dev.