Skip to the JSONL parser

One record per line · Local · Lossless

JSONL Validator & NDJSON Viewer to CSV

Validate JSON Lines record by record, jump to exact line errors, search keys and values, and export a spreadsheet-safe CSV. LiveParse keeps 64-bit IDs, overflowing exponents, and repeated object members intact.

Parse JSONL now No upload, account, or server-side parsing
events.ndjson
{"event":"created","id":9007199254740993}
{"event":"paid","id":9007199254740993}
{"event":"shipped","id":9007199254740993}

3 valid recordsLarge ID preserved

Interactive JSON Lines tool

Paste JSONL to validate, filter, and convert it

Each non-empty physical line is parsed independently in a Web Worker. Valid records remain available even when another line is broken, so one malformed log entry does not hide the rest of the file.

Loading the interactive JSONL parser…

Enable JavaScript to validate records, filter the table, and export CSV.

The format in plain language

What are JSONL and NDJSON?

JSON Lines, often saved as .jsonl, stores a complete JSON value on each line. Newline-delimited JSON, commonly saved as .ndjson, describes the same practical layout. A file can be processed one record at a time instead of loading one enormous outer array.

This shape works well for application logs, analytics events, database exports, machine-learning datasets, and streaming APIs. Appending one new event is easy, command-line tools can read a line at a time, and a bad record has a clear physical location.

JSONL is not a different JSON grammar. Every non-empty line must still be a complete strict JSON value: double-quoted strings, no comments, no trailing commas, and no Python True, False, or None literals. LiveParse skips visibly blank JSON-whitespace lines but reports them in the totals.

JSONL
One complete JSON value per line; usually uses the .jsonl extension.
NDJSON
Newline-delimited JSON; usually uses .ndjson. The record model is equivalent.
Record
A single line containing an object, array, string, number, boolean, or null.
Delimiter
A line ending—LF or CRLF—separates one independent record from the next.

A reliable three-step workflow

How to inspect a JSONL file online

Use the parser as a first-pass data quality check before importing logs, events, or generated training records into another system.

  1. 1

    Paste or open a file

    Load .jsonl, .ndjson, JSON, or plain text. The text stays in your tab and is handed directly to a local worker.

  2. 2

    Review lines and warnings

    Check valid, error, blank, and warning totals. Every syntax error includes its physical line, UTF-16 column, parser code, and a source preview.

  3. 3

    Filter or export

    Search decoded keys and values, inspect the virtual table, copy formula-safe CSV, or download only the valid records as normalized JSONL.

Choose the right structure

JSONL versus a JSON array

Both can represent the same records, but their operational tradeoffs differ. The right choice depends on how the data is produced and consumed.

ConcernJSONL / NDJSONJSON array
ShapeOne independent JSON value per line.One document containing an outer [ ] array.
StreamingA consumer can process and discard each completed line.A parser often waits for the closing bracket or uses a streaming JSON parser.
AppendingAppend a line without rewriting earlier records.The closing bracket and commas must remain valid.
ErrorsA bad line can be isolated while other lines remain usable.One syntax error invalidates the containing document.
Human reviewLine numbers map directly to records but nested values stay compact.Pretty indentation is easier for deeply nested manual reading.

Data integrity first

Why lossless JSONL parsing matters

Log pipelines and export files often contain identifiers and measurements that are valid JSON numbers but cannot be represented safely by a JavaScript number.

64-bit IDs stay exact

A token such as 9007199254740993 is retained as written. It is never rounded to 9007199254740992 for the table, filtered JSONL, or CSV.

Overflow never becomes null

A valid token such as 1e400 remains 1e400. LiveParse warns that native JavaScript conversion would overflow instead of silently exporting null.

Repeated keys remain visible

For {"tag":1,"tag":2}, both members are retained and the table uses separate tag and tag #2 columns. A duplicate warning points to the later occurrence.

Safer spreadsheet handoff

How JSONL to CSV conversion works

Objects become rows and decoded top-level property names become columns in first-seen order. Missing properties produce empty cells. Arrays, nested objects, and repeated members remain compact lossless JSON inside one CSV field rather than being flattened unpredictably.

CSV fields containing a comma, quote, carriage return, or newline are enclosed in double quotes, and embedded quotes are doubled. Output uses CRLF line endings by default, following the conventional CSV record style described by RFC 4180.

Spreadsheet applications can interpret text beginning with =, +, -, or @ as a formula. LiveParse prefixes those cells—including dangerous characters after leading whitespace—with an apostrophe before quoting. This favors safe inspection over automatic numeric typing. Review any CSV before importing it into a trusted operational workbook.

When a key/value filter is active, Copy CSV and Download CSV export the matching valid records. Clear the filter to export every valid line. Error lines are never invented or repaired during conversion; use JSON Repair when you intentionally want suggested fixes.

Nested JSONL record

{"id":9007199254740993,
 "labels":["paid","priority"],
 "customer":{"region":"APAC"}}

The ID remains exact. The labels array and customer object are serialized compactly into quoted CSV cells, with their original numeric tokens and repeated members preserved.

Designed for larger files

Worker parsing and a virtual record table

The parser, key/value filter, row extraction, and export generation run away from the main page in a Web Worker. The table requests a small overscanned window instead of mounting every record as a DOM row.

Bounded browser rendering

Only the visible neighborhood is rendered. Interactive browsing is capped at the first 100,000 matching records and 32 discovered columns so a highly irregular file cannot create millions of page elements.

Full filtered export

The browsing cap does not truncate exports. CSV column discovery and valid-JSONL downloads use the complete filtered record set held in the worker.

Local does not mean unlimited

Your device still needs memory for the input, parsed records, and requested export. For multi-gigabyte streams, a command-line streaming pipeline remains the more appropriate tool.

Questions answered

JSONL parser FAQ

Are JSONL and NDJSON the same thing?

For most tools, yes: both mean one complete JSON value per line. Naming and media-type conventions vary, but the line-oriented data model is the same. LiveParse accepts both JSONL and NDJSON files.

Does each line need to be a JSON object?

No. A strict JSON string, array, number, boolean, or null can also be a record. Objects produce property columns; non-object records appear in a $value column.

Can one record span several lines?

No. JSONL uses the physical line ending as the record delimiter. If you paste one pretty-printed JSON document, LiveParse detects that case and directs you to the regular JSON Parser.

What happens to invalid lines during CSV export?

They are excluded. The error list keeps their physical line, column, parser code, and preview visible, while valid records remain filterable and exportable. LiveParse does not guess a repair during conversion.

Are large integers converted to scientific notation?

No. Every JSON number remains an original text token. CSV cells use that exact token, including 64-bit IDs, decimal spelling, exponent notation, and negative zero.

How are nested objects and arrays converted to CSV?

They stay as compact JSON inside one CSV field. This avoids lossy flattening rules and preserves duplicate object members and exact number lexemes.

Does the tool upload my log or dataset?

No. File reading, parsing, filtering, table paging, and export generation happen in your browser. Read the privacy and cookie notice for the site-wide policy and practical browser considerations.