JSONL Viewer
View & ExploreOpen .jsonl and .ndjson files, read every record as a table, and keep going when a line is malformed.
What is JSONL, and why won't a JSON viewer open it?
JSONL — JSON Lines, also written NDJSON or newline-delimited JSON — stores one complete JSON value per line, with nothing between the records but a newline. There is no wrapping array and there are no commas separating entries, which means a .jsonl file is not itself a valid JSON document. That is deliberate, and it is why a strict JSON parser fails on line 2 of a perfectly healthy JSONL file.
The payoff is streaming. A program can read one line, process it, and discard it without ever holding the whole file in memory, and it can append a new record by writing a single line to the end of the file. That property is why JSONL, not JSON, is the format behind machine-learning datasets, OpenAI fine-tuning files, structured application logs, and bulk exports from BigQuery, Snowflake, and MongoDB.
One bad line shouldn't cost you the file
This is the practical difference between reading JSONL and reading JSON, and the reason a dedicated viewer is worth having. A JSON parser is all-or-nothing: one stray comma anywhere in a 40 MB document and you get an error message instead of your data. JSONL has no such coupling, because each line stands alone.
So this viewer parses every line independently. A malformed record is reported with its line number and the exact parse error, and every other record still loads and displays. A truncated log, a half-written export, a file where one row contains an unescaped quote — all of them still open, and you can see precisely which lines need attention rather than being told the whole file is invalid.
When the records arrive with no line breaks
JSONL's one rule is one record per line, and plenty of producers break it. Some stream JSON with no delimiter at all, so an entire file arrives as {…}{…}{…} on a single line. Others pretty-print each record across several lines, which is what you get from jq without the -c flag. Both are still perfectly good data; neither is newline-delimited.
The viewer handles both. It scans the document brace by brace — while correctly ignoring braces that appear inside string values — splits the records apart, and reads them as normal. Click Format to make the fix permanent: the document is rewritten as canonical JSONL, one compact record per line.
What Format does — and what it deliberately doesn't
Format normalises rather than beautifies. It rewrites the document as exactly one compact JSON record per line, splitting concatenated records apart, removing blank lines, collapsing stray indentation, and converting Windows line endings to plain newlines.
It does not pretty-print, and that omission is the point: indenting a record across several lines would stop the file being valid JSONL at all. When you want a readable layout, the Records and Table views are where to look — they present the same data expanded and searchable while the file on disk stays canonical. Lines that cannot be parsed are passed through untouched rather than dropped, so formatting never quietly loses data.
Read JSONL as a table
JSONL records are usually uniform: the same keys, in the same shape, repeated once per line. That makes a table the natural way to read them. The Table view lays out every record as a row, with its top-level keys as columns and nested values kept whole in their cells, and lets you sort by any column and filter across all of them — which turns a wall of newline-separated objects into something you can actually scan and compare.
When records are irregular, or you need to inspect one in full, the Records view lists them by line number with each value expandable as a tree. Between the two you can survey the whole file and drill into any single entry without leaving the page. For a plain JSON document rather than JSONL, the JSON table viewer and JSON viewer cover the same ground.
Convert JSONL to a JSON array — and back
Plenty of tools want a normal JSON document rather than JSON Lines. Copy as JSON array collects every valid record into a single pretty-printed array, ready to paste anywhere standard JSON is expected. Invalid lines are left out of the array and stay listed as errors, so you always know what was dropped.
The reverse direction is handled automatically: paste a JSON array into the editor and the viewer recognises it as the wrong format and offers to split it into newline-separated records. That is also what happens when you drop a CSV or Excel file, which makes this a quick route from a spreadsheet export to a JSONL training file. To go further, the JSON to CSV converter handles flat tabular output.
JSONL vs. NDJSON vs. JSON
JSON Lines and NDJSON describe the same physical layout — one JSON value per line, UTF-8, newline-separated — and the two specifications differ only in wording and a few edge cases nobody hits in practice. Every common tool treats .jsonl and .ndjson as interchangeable, and so does this viewer. You will also meet the same format with a .txt or .log extension, which is equally fine here.
Plain JSON remains the better choice when a document is a single coherent object, when consumers expect one parse call, or when the file is small enough that streaming buys you nothing. Reach for JSONL when the data is a long sequence of similar records, when it needs to be appended to over time, or when it is too large to hold in memory at once.
Working with large JSONL exports
JSONL files are routinely large — that is much of the point of the format. Records here load a page at a time rather than mounting all at once, so a file with tens of thousands of lines stays responsive while you scroll, sort, and filter. The status bar reports how many records were read, how many lines failed, how many distinct fields appeared, and whether the records share a uniform shape.
Everything runs in your browser. Nothing is uploaded, so there is no transfer wait and no server-imposed size cap, and a production log or a dataset containing customer records is safe to open. For very large single-document JSON rather than JSONL, the JSON file viewer is built for the same job on the other format.
Everything in the JSONL Viewer
Free JSONL viewer for JSON Lines and NDJSON files. Read every record as a sortable table, skip malformed lines instead of failing, and convert JSONL to a JSON array. Nothing uploaded.
Per-line recovery
One malformed line is reported and skipped — every other record still loads.
Records as a table
Each record becomes a row, its top-level keys the columns you sort and filter by.
JSONL ↔ JSON array
Copy the whole file as a JSON array, or turn a pasted array into JSONL.
Format to canonical JSONL
One compact record per line — splits concatenated JSON and drops blank lines.
Built for big files
Records load a page at a time, so huge exports stay responsive.
Frequently asked questions
A JSONL file — JSON Lines, also called NDJSON or newline-delimited JSON — holds one complete JSON value per line, separated by newlines. It is the standard format for machine-learning datasets, OpenAI fine-tuning files, structured application logs, and bulk exports from BigQuery, Snowflake, and MongoDB, because a program can read or append one record at a time without loading the whole file into memory.
Because a JSONL file is deliberately not a single valid JSON document. Each line is valid JSON on its own, but the file as a whole has no wrapping array and no commas between records, so any strict JSON parser fails on line 2. A JSONL viewer reads the file line by line instead, which is why this tool opens files that a standard JSON viewer rejects.
Nothing else breaks. Every line is parsed independently, so a single corrupt record is reported with its line number and the exact parse error while all the other records still load and display. That is the whole point of the format — and it is exactly the case where a normal JSON parser would give you nothing at all.
In practice, yes. JSON Lines (.jsonl) and newline-delimited JSON (.ndjson) describe the same layout: one JSON value per line, UTF-8 encoded, separated by newlines. The specifications differ only in wording and in minor edge cases, and every common tool treats the two extensions interchangeably. This viewer accepts both, along with plain .txt and .log files.
Open the Source tab and click 'Copy as JSON array'. Every valid record is collected into a single pretty-printed JSON array you can paste anywhere a normal JSON document is expected. To go the other way, paste a JSON array into the editor and the tool offers to split it into newline-separated JSONL records.
Yes. Some producers stream JSON with no delimiter at all, so a whole file arrives as `{...}{...}{...}` on a single line. The viewer detects that, splits the records apart, and reads them normally instead of reporting one giant invalid line. Click Format to rewrite the document as proper JSONL with one record per line. The same recovery works for pretty-printed streams, where each record spans several lines.
It rewrites the document as canonical JSONL: exactly one compact JSON record per line, with concatenated records split apart, blank lines removed, and stray indentation collapsed. Note it does not pretty-print — indenting a record across multiple lines would stop the file being valid JSONL. Use the Records or Table view when you want a readable layout, and Format when you want a clean file. Lines that cannot be parsed are left untouched rather than dropped, so formatting never loses data.
Yes. Records load a page at a time rather than mounting all at once, so a file with tens of thousands of lines stays responsive. Very large files are read up to a generous record ceiling and the status bar tells you how many of the total lines are shown. Because everything runs in your browser, there is no upload wait and no file size limit imposed by a server.
Yes. Click 'Load from URL', paste any public URL that returns JSON — an API endpoint, a raw GitHub file, or a CDN asset — and the content loads instantly in your browser. The request goes directly from your device; nothing passes through our servers.
No. Every operation runs entirely in your browser using client-side JavaScript. Your JSON is never uploaded, logged, or stored on any server — it never leaves your device.
Yes, completely free with no sign-up required. There are no usage limits, no watermarks, and no premium gate on any feature.
Related tools
JSON File Viewer
Drag, drop, and read any JSON file — plus CSV, Excel, and ZIP — instantly in your browser.
JSON Viewer
View JSON data and objects online — syntax highlighting, collapsible nodes, free and private.
JSON Table Viewer
View arrays of JSON objects as a sortable, filterable table.
JSON to CSV Converter
Convert JSON to CSV online — transform any JSON array or JSON format into spreadsheet-ready CSV for Excel or Sheets.