Analyze JSONL / NDJSON log lines
Paste newline-delimited JSON (JSONL / NDJSON) and read it as a table — each line is one record — so you can scan a field across many log entries instead of parsing the stream by eye.
Open the tool, then paste the sample input below. Everything runs locally in your browser.
The problem
Structured logs are emitted as JSON Lines: one JSON object per line. A wall of them is unreadable, and a normal JSON parser rejects the whole stream because it is not a single document. Viewing each line as a row lets you scan and compare fields across entries.
Sample input
{"ts":"10:00","level":"info","msg":"start"}
{"ts":"10:01","level":"error","msg":"db timeout"}
{"ts":"10:02","level":"info","msg":"retry"}
Expected output
ts level msg
10:00 info start
10:01 error db timeout
10:02 info retry
Each line becomes a row and the union of keys becomes the columns, so you can scan the level column to find the error among the info lines.
How to do it
- Paste the JSONL or NDJSON log.
- View each line as a table row.
- Scan a column such as level across all rows.
- Expand a row to see its full record.
- Copy the rows or fields you need.
Common mistakes
- Pasting JSONL into a normal JSON parser, which rejects multiple objects.
- A trailing blank line producing an empty record.
- Lines with different keys leaving gaps in some columns.
- Very large logs that are better filtered before viewing.
- Treating a pretty-printed multi-line object as one JSONL line.
Related tools
Related guides
FAQ
What is JSONL or NDJSON?
JSON Lines (also called NDJSON) is a format where each line is a separate JSON object. It is common for logs and streaming because you can append one record at a time.
Why does a JSON parser reject my log?
A standard JSON parser expects a single document. A JSONL stream is many objects separated by newlines, so it must be parsed line by line.
How do I scan a field across many lines?
View the JSONL as a table where each line is a row and keys are columns. Then read down a single column, such as level, across all records.
What if lines have different fields?
The columns are the union of all keys, so a record missing a field simply shows an empty cell in that column.
Is my log uploaded?
No. Parsing runs locally in your browser. Your log is not sent to a server.
JSONL parsing runs locally in your browser. Nothing is uploaded.
View JSONL logs, format and query JSON, and work with API payloads — grouped in one place.