# Open JSONL, NDJSON and concatenated JSON streams

Log pipelines and bulk exports emit one JSON value per line rather than one array. A strict parser rejects the whole file at the start of the second record. JSONParse detects the format and indexes every record.

## The format

```json
{"ts":"2026-09-14T08:14:02Z","level":"info","msg":"request","ms":12}
{"ts":"2026-09-14T08:14:02Z","level":"warn","msg":"retry","attempt":2}
{"ts":"2026-09-14T08:14:03Z","level":"error","msg":"upstream timeout"}
```

That is three documents, not one. It is what you get from structured application logs, from BigQuery and Snowflake exports, from `kubectl logs` with a JSON encoder, from Elasticsearch bulk files and from most model APIs streaming results.

## How detection works

Parse mode defaults to **auto**: a strict single-document parse is attempted first, and if it fails at a point consistent with a second value beginning, the file is re-read as a stream of concatenated values. Whitespace between records, including no newline at all, is handled. You can force the behaviour by setting parse mode to `json` or `ndjson` in settings when a file is ambiguous.

Records are presented as the roots of one browsable document, so searching, expanding and generating run across the whole file rather than one line at a time. The status bar marks a multi-root document as NDJSON.

## Why this is the right input for schema work

A single record shows one shape. A thousand records show which keys are actually optional, which strings are really enums and which fields the upstream service only populates sometimes. Generating a [JSON Schema](/json-schema-generator) or [TypeScript types](/json-to-typescript) from an NDJSON capture gives a far more honest result than generating from one example.

[Open the viewer](https://jsonparse.online/)

## Frequently asked questions

### What is the difference between JSONL and NDJSON?

Nothing that matters in practice. Both mean one JSON value per line. NDJSON has a short specification requiring newline separation and UTF-8; JSONL is the same convention under a different name. JSONParse treats them identically and also accepts values concatenated without newlines.

### Can it open a file where some lines are malformed?

Parsing stops at the first malformed record and reports its line and column, the same as any other syntax error. This is deliberate: silently skipping lines in a log file hides the truncated write that caused the problem.

### Does search work across all records?

Yes. The whole file is indexed as one document with multiple roots, so a search covers every record and matches are navigated in file order.

---

Source: https://jsonparse.online/jsonl-viewer
Last updated: 2026-09-14
JSONParse — Read, search and type huge JSON in your browser
