JSONL Viewer, Large JSONL Table & NDJSON Viewer

JSONL Viewer, Large JSONL Table & NDJSON Viewer, a VS Code extension by Zovo

A JSONL viewer and NDJSON viewer for VS Code. Open any .jsonl, .ndjson or .jsonl.gz file as a table, a record tree or a chat transcript, with the first rows on screen before the rest of the file is read.

Install in VS CodeOpen the Marketplace page

Free, MIT license. Needs VS Code 1.90.0 or newer. Extension ID zovo.zovo-jsonl-viewer, version 0.2.3.

A 5,000 line analytics export with 14 keys as a table, with the Columns menu open: four columns unchecked (session_id, referrer, browser, ab_test) and the button showing Columns (4 hidden)
Chat view of a fine-tuning setTable with a filter, a sort and one cell opened
An OpenAI-style fine-tuning record shown as chat bubbles with a system prompt, the user question, an assistant tool call to lookup_order with its JSON arguments, the tool result and the final answerA 30,000 line NDJSON log filtered to 312 error records slower than 300 ms, sorted by timestamp, with the nested ctx object of one row opened as a tree
Record tree with copy JSONPathBad lines marked with their line numbers
One failed eval record as a JSON tree in the light theme, after copying the path $.outputA file with blank lines, emoji, right-to-left text and three invalid lines shown in red with lines 7, 9 and 13

Real output. The Columns and .log pictures are a real VS Code window (1.142) with the packaged extension. The others are the extension's own webview page, with its Content Security Policy, fed by its real indexer and message protocol and captured in headless Chrome. The files are generated by scripts/make-samples.js, so no real logs or datasets appear.

Quick start

  1. Install JSONL Viewer and click any .jsonl, .ndjson, .jsonlines or .jsonl.gz file.
  2. Switch between Table, Record and Chat at the top right. Press Enter in the Find or Filter box to search.

To edit the raw text, click Open as Text. Run "JSONL Viewer: Get Started" for a short tour.

Questions people ask

Is JSONL Viewer, Large JSONL Table & NDJSON Viewer free?

Yes. JSONL Viewer, Large JSONL Table & NDJSON Viewer is free and MIT licensed.

How do I install JSONL Viewer, Large JSONL Table & NDJSON Viewer?

Click "Install in VS Code" above, or search for zovo.zovo-jsonl-viewer in the Extensions view.

What you can do

The table makes one column per top-level key, from the first 1,000 records. Each header shows the type (string, int, float, bool, object, array or mixed) and how many of those records fill that key. Click a header to sort the whole view. Clicks cycle through ascending, descending and file order, and missing values go last. Click a cell to open its value as a tree below the table. Double-click a row, or press Enter, to open the record.

Click Columns above the table to pick which columns show. The list has a find box for wide files, Show all, and Hide all but first. Drag the right edge of a column header to change its width, or double-click the edge to fit it again. Hidden columns and widths stay with the tab while it is open. Find and Filter still search hidden columns, and CSV export leaves them out.

To read a log or an export that isn't named .jsonl, right-click it in the Explorer (.log, .json, .txt, .out and .data files) or its editor tab and pick "Open as JSON Lines (any file)". The same command is in the Command Palette for any file. If none of the first lines is valid JSON, a note says so and offers Open as Text, so you never get an empty page.

api-server.log opened with Open as JSON Lines and filtered to level == error: 92 of 400 records in the table

The record view shows one record as a tree that opens two levels deep. Hover any line and click the small copy button to copy its JSONPath, such as $.messages[2].content. Copy JSON copies the whole record. Open line in editor jumps to that line in the text editor, beside the viewer. Use the arrow keys, or J and K, to move between records.

The filter language is short. key == value, key != value, >, >=, <, <=, key contains text, key !contains text, key =~ regex, key exists and key missing all work, joined with and. Nested keys look like ctx.user.id or tags[0], and quoted keys like ["odd key"]. Find matches text anywhere in the raw line and ignores case.

Lines that aren't valid JSON show in red with their line number and the parser's message. The status bar counts them. Click the count to see only bad lines, or Next bad line to step through them.

When a file grows, new records show up within about two seconds. Turn on Follow to keep the newest record in view. A search or filter that's open picks up new matches too. If the file is replaced by a shorter one, the viewer reloads it.

Export saves the records in view, after Find, Filter and sort, as CSV, a JSON array or JSON Lines. Lines that aren't valid JSON are skipped, and the message tells you how many.

Limits

WhatLimit
File sizeUnder 4 GB. Bigger files show a message and an Open as Text button.
One lineLines over 5 MB show as truncated in the table and the record view. Open the line in the editor to see all of it.
.jsonl.gzUnpacked in memory up to 512 MB. Past that, the first 512 MB is shown with a note. Live tail is off for packed files.
Remote files (virtual workspaces)Read whole, up to 256 MB.
SortUp to 2,000,000 records in view. Filter first for bigger files.
ColumnsFrom the first 1,000 records. Keys that appear only later still show in the record view.

Find works on the raw text of each line, so it won't match a character that the file stores as a \u escape. Use a filter with contains for that, since filters read the parsed values.

Privacy

JSONL Viewer runs offline. It makes no network calls and has no telemetry. The webview runs under a strict Content Security Policy with no remote scripts, and file content goes into the page only as text, never as HTML.

Settings

SettingDefaultWhat it does
jsonlViewer.liveTailtrueAdd new records while the file grows
jsonlViewer.askForRatingtrueAsk one time for a Marketplace rating, after 5 files and 2 days. Turn it off with false

Using it with Agent Session Viewer

If you also have Agent Session Viewer installed, VS Code asks which editor should open Claude Code and Codex session files. Pick "Configure Default" once and choose the one you want. Other .jsonl files always open in JSONL Viewer.

License

MIT. Gzip support uses fflate (MIT).

Install JSONL Viewer, Large JSONL Table & NDJSON Viewer

Click the button to open VS Code and install it, or press Ctrl+P (Cmd+P on macOS) in VS Code and run ext install zovo.zovo-jsonl-viewer.

Free, MIT license. Needs VS Code 1.90.0 or newer. Extension ID zovo.zovo-jsonl-viewer, version 0.2.3.

Source code and issues are on GitHub.

All our VS Code extensions

Support this work

If this extension saves you time, you can support the work on GitHub Sponsors. Monthly tiers start at $5, and one-time tiers start at $15. Sponsorship is optional, and the tool works the same without it.