JSONL Viewer

Open JSON Lines (.jsonl) and NDJSON files in your browser and read them as a table, one JSON object per row. Keys become columns and nested values expand inline, with nothing uploaded.

Free, no sign-up, and fully client-side. Your file never leaves your browser. Opens .jsonl, .ndjson.

Open the viewer and drop a file to get started.

What is JSON Lines?

JSON Lines (also called JSONL or NDJSON) is a text format where each line is a complete, independent JSON object. It is the default for streaming records, log files, machine-learning datasets and LLM fine-tuning data, because you can append and process one line at a time without parsing the whole file.

ViewKit reads each line as a record, unions the keys across records into columns, and shows the result as a table. Nested objects and arrays render as JSON you can read in place. Malformed lines are skipped and counted rather than breaking the view, and nothing is uploaded.

What you can do with the JSON Lines viewer

One object per row

Each line becomes a row; the union of all keys becomes the columns, so ragged records still line up.

Nested values

Objects and arrays are shown as compact JSON in the cell, so nested structure stays readable.

Resilient parsing

Blank or malformed lines are skipped and reported instead of failing the whole file.

Handles large files

Rows are virtualized, so long files scroll smoothly.

How to open a JSON Lines file

  1. 1

    Drop your .jsonl or .ndjson file onto the box above (or click to browse). It is read in your browser, nothing uploads.

  2. 2

    Each line is parsed into a row and the keys become columns.

  3. 3

    Scroll the table; nested objects and arrays are shown as JSON in the cell.

Doing the same thing in code

Reading the first few records in Python:

Python
import json

with open("data.jsonl") as f:
    for i, line in enumerate(f):
        if i >= 5:
            break
        record = json.loads(line)
        print(sorted(record))          # the keys in this record

Finding which keys exist across the whole file requires streaming every line, collecting the union of keys, and handling lines that fail to parse. This page does that on load and reports the number of skipped lines.

JSON Lines viewer: frequently asked questions

What is the difference between JSONL and NDJSON?

They are the same idea, one JSON object per line. ViewKit opens both .jsonl and .ndjson files.

Why are some cells empty?

That record does not contain that key. The columns are the union of the keys across all records, so a record missing a field leaves a blank rather than shifting the row. Gaps in a column identify records written with a different set of fields.

Can it open a regular .json file?

Not as JSON Lines. A .json file holding one big array is a single JSON document, whereas JSONL is one independent object per line with no enclosing brackets or commas. If your file starts with a “[”, it is the former.

Can I check a fine-tuning dataset before uploading it?

Yes. Chat fine-tuning files expect one object per line containing a messages array. The common problems are a blank line, a record missing the messages key, and a misspelled role. Each appears as a skipped line or an empty column, and the file is not uploaded anywhere to be checked.

What happens to invalid lines?

Lines that are not valid JSON are skipped and counted, so one bad record does not stop you from reading the rest.

Is my data uploaded?

No. The file is parsed entirely in your browser; its contents never leave your machine.

Also view in ViewKit