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
Drop your .jsonl or .ndjson file onto the box above (or click to browse). It is read in your browser, nothing uploads.
- 2
Each line is parsed into a row and the keys become columns.
- 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:
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 recordFinding 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.