Skip to main content

jlv

A terminal viewer for JSONL files (one JSON value per line).

https://github.com/user-attachments/assets/5e47dbae-dd43-408b-b65d-e8e98aeeba17

Install the jsonl-viewer package; the command is still jlv:

uv tool install jsonl-viewer
jlv your-file.jsonl

Alternatively, use pip install jsonl-viewer. From a source checkout:

uv run jlv your-file.jsonl

Requires Python 3.12+ and Textual 8+. The left panel lists numbered records; the right panel shows the selected record as indented JSON. Select a string to read its decoded contents in a scrollable, word-wrapped inspector.

Screenshots

Browse records alongside their formatted JSON:

JSONL records in the left panel and the selected record's formatted JSON in the right panel

Open a string to read its decoded, word-wrapped contents:

String inspector showing decoded multi-paragraph text in a scrollable window

Controls

Key / action Effect
Up / Down, k / j Select the previous / next record or line
Page Up / Page Down Move by a page
Home / End, gg / G Move to the first / last row
Tab / Shift+Tab Switch panels
Left / Right, h / l Scroll horizontally where available
0 / $ Reveal the start / end of the current line
[ / ] Navigate object/array block starts in the JSON preview
% Jump between matching object/array delimiters in the JSON preview
Enter or click Inspect a selected string
Mouse wheel / scrollbars Scroll the panel under the pointer
Ctrl+F, /, ? Open search (both / and ? search forward)
Enter in search Find next match and return focus to the panel
Enter in a main panel while search is open Close search, focus the JSON preview, and inspect its current line if it is a string
F3, n Find next match
Shift+F3, N Find previous match
:number then Enter Jump to a 1-based line in the originating panel
:q then Enter Close the string inspector, or quit from a main panel
Alt+R / Alt+C Toggle Regex / Match case while search is open
Escape Close search first, then the string inspector

The inspector is read-only and supports text selection and Ctrl+C to copy. The main panels also support text selection. The left-hand preview is capped at 1,000 characters, but the right-hand document and decoded strings are not truncated.

The main panels share one search across the full formatted JSON, including text beyond the left panel's truncated previews. A result selects its record on the left and highlights the matching text on the right, scrolling it into view. F3 and Shift+F3 (or n and N with a panel focused) move between individual matches, including matches in the same record, and wrap at either end of the file. Escape closes the search bar.

Inside the string inspector, search is independent and limited to that decoded string.

Search defaults to literal, case-insensitive matching. Use Alt+R for regular expressions and Alt+C for case-sensitive matching; the search bar displays both settings. Press Enter to search after editing the query or changing an option.

Large files

Both main panels render only visible rows, rather than creating a widget for every record or JSON field. The loader validates the entire file in one buffered pass and builds a compact byte-offset index. Records are read and parsed on demand; small bounded caches retain recent previews and formatted documents. The string inspector also renders a viewport, and defers wrapping until its actual display width is known.

Validation still happens before the viewer opens: malformed JSON, invalid UTF-8, and interior blank lines are reported with a line number. Trailing blank lines are permitted. This is a read-only viewer, not a live file follower; do not edit the input file while viewing it.

Sample file

The repository includes stress-test.jsonl.gz, a compressed synthetic dataset with 30,000 records. Extract it before opening it:

gzip -dk stress-test.jsonl.gz
uv run jlv stress-test.jsonl

The extracted file is 300 MB and is Git-ignored. Records range from approximately 1-100 KB and contain nested structures and strings of varying lengths. Some strings intentionally end mid-sentence to fit the generated record sizes.

Release files for jsonl-viewer 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jsonl-viewer 0.0.2
File Size Uploaded
jsonl_viewer-0.0.2.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jsonl-viewer 0.0.2
File Interpreter ABI Platform
jsonl_viewer-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 29.2 kB

Release files / jsonl_viewer-0.0.2.tar.gz

Download URL jsonl_viewer-0.0.2.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
67ffd24596d77bbb4185160942cf286846dff86d6518ad09de3ea1f4af1e85ae
BLAKE2b-256 checksum
How to use checksums
007681fc4ef492722ddbe537d31bbf27045bc3523dac10084d15667f3a5c261b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release files / jsonl_viewer-0.0.2-py3-none-any.whl

Download URL jsonl_viewer-0.0.2-py3-none-any.whl
Size 15.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a5ac104cbad7f9e060752edc7d463e9f36c5b371c0d249912043c7fe7b622e03
BLAKE2b-256 checksum
How to use checksums
465138b5e79d41afe250785c5f44b2fcfcf077a7e45b3d064d1cdf2f04d317b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page