Validate NDJSON Online — Report or Extract Valid Lines

Validate NDJSON: max lines, strict or skip bad lines, report counts or extract valid lines — entirely in your browser.

Loading…
NDJSON validator — report or extract
Check JSON-lines streams in the browser. Fail fast in strict mode, or salvage valid lines when skipping bad rows.

Developer notes

• onBadLine and outputMode are orthogonal. • strict + extractValidLines fails with empty extract if any line is bad. • skip + extractValidLines returns compact valid lines only. • Extract never pretty-prints. • Debounced ~300 ms while typing.

Options

Max lines
Hard cap on non-empty lines (1000 or 10000). Exceeding the cap fails the run.
On bad line
strict fails the run when any line is invalid; skip continues and lists issues.
Output mode
report shows counts (and issues); extractValidLines emits compact NDJSON of valid lines (empty when strict fails).

When teams pick this route

• Verify an NDJSON export before upload. • Split valid lines out of a contaminated stream. • Cap work with maxLines before pasting huge dumps. • Get a count summary without extracting.

Worked examples

Mixed stream (skip + extract)

Input

{"ts":"2026-07-12T09:58:00.001Z","level":"info","msg":"boot","service":"api"} {"ts":"2026-07-12T09:58:00.120Z","level":"info","msg":"listening","port":3000} {"broken {"ts":"2026-07-12T09:58:01.004Z","level":"error","msg":"db timeout","query":"orders.list"} not-a-json-line {"ts":"2026-07-12T09:58:01.200Z","level":"warn","msg":"retry scheduled","attempt":2} {"ts":"2026-07-12T09:58:01.450Z","level":"info","msg":"ok","count":12} {"ts":"2026-07-12T09:58:01.900Z","level":"error","msg":"auth failed","userId":"u9"} {incomplete: true {"ts":"2026-07-12T09:58:02.100Z","level":"debug","msg":"span closed","span":"http.request"}

Result

{"ts":"2026-07-12T09:58:00.001Z","level":"info","msg":"boot","service":"api"} {"ts":"2026-07-12T09:58:00.120Z","level":"info","msg":"listening","port":3000} {"ts":"2026-07-12T09:58:01.004Z","level":"error","msg":"db timeout","query":"orders.list"} {"ts":"2026-07-12T09:58:01.200Z","level":"warn","msg":"retry scheduled","attempt":2} {"ts":"2026-07-12T09:58:01.450Z","level":"info","msg":"ok","count":12} {"ts":"2026-07-12T09:58:01.900Z","level":"error","msg":"auth failed","userId":"u9"} {"ts":"2026-07-12T09:58:02.100Z","level":"debug","msg":"span closed","span":"http.request"}

Strict report on bad line

Input

{"a":1} {bad}

Result

ok: false — summary counts + issue on line 2

Navigate related log tools

Format with format JSON logs, filter via filter JSON logs, or open the logs hub.

NDJSON validator FAQ

Strict, skip, extract

Is there a separate split-ndjson tool?

No. Use outputMode extractValidLines with onBadLine skip to salvage valid lines from a mixed stream.

What if I exceed maxLines?

Validation fails with an error citing count vs max. Lines are never silently truncated.

Does extract pretty-print?

No — extracted lines are always compact JSON.stringify output.

More log tools in this cluster

Looking for converters, encoders, formatters, and minifiers in one place? Developer tools hub Open the curated developer tools catalogue.