JSON Lines (NDJSON) Viewer
Paste or drop a .jsonl / .ndjson file, see records as a table, filter by field:value, pick which columns to keep, and re-export as JSON or CSV.
How to use
- Paste lines or drop a
.jsonl/.ndjsonfile. The table shows automatically. - Filter with
field:value(substring match) or plain text (matches anywhere in the JSON). - Pick columns in the second box to keep — leave blank to show all keys discovered.
About this tool
ShowHide
JSON Lines, also called NDJSON, is one JSON value per line — the format that streaming logs, machine-learning datasets and tail-friendly pipelines settled on. This viewer parses each line independently, so one malformed record does not poison the file: you get the parsed table and, separately, the bad lines with the exact parser error for each. A field:value filter narrows by content and accepts a nested.path as well as a top-level key, and a column picker keeps only the fields you want in the re-export.
The format exists because a JSON array cannot be appended to. Adding a record to [...] means rewriting the closing bracket, so a crashed writer leaves a file no parser will touch, and a reader has to hold the whole array in memory before it sees the first element. One value per line fixes all three: append by writing a line, recover by discarding the last partial one, and process a hundred-gigabyte file a line at a time.
What makes line-splitting safe rather than merely convenient is a rule in the JSON grammar itself: a literal newline is never allowed inside a string. A line feed in a value has to be written as the two characters \n, so no newline in a well-formed document can be anything other than a record boundary. Splitting on newlines is therefore correct, not a heuristic — which is not true of CSV, where a quoted field may contain a real line break and naive line splitting silently corrupts rows.
Two conventions to respect when you write these files. The encoding is UTF-8 and nothing else, so a file emitted as UTF-16 or Latin-1 will not interoperate however valid the JSON looks locally. And each line should be a complete value on its own — pretty-printing is exactly what the format forbids, since an indented object spans many lines and each of those lines is invalid alone. If a file will not load anywhere, checking that first usually explains it. Everything here runs in the browser; nothing is uploaded.
Frequently asked questions
What happens to malformed lines?
They're listed at the bottom with their line number and the JSON parse error. Valid lines on either side of a bad one are still parsed and displayed normally.
Can I filter on nested fields?
Yes — use dotted paths like user.email:alice or events.0.type:login. The path walks both objects and arrays.
Why do logs and datasets use JSON Lines instead of a JSON array?
Because a file of one object per line can be appended to, split and read with ordinary line tools without parsing the whole document. It also fails gracefully: a crash in the middle of a write damages the last line only, while a truncated JSON array is unreadable from the first byte. That is exactly what you want from a log or a training set that grows all day.
The table shows columns that most of my records do not have. Is that right?
Yes. Records in a JSON Lines file are independent of each other, so the table is the union of every key seen and a record without a key shows an empty cell. That shape is normal for event logs whose fields changed over time — and it means filtering or sorting on a field only reaches the records that actually carry it.
Related tools
CSV ↔ TSV ↔ Pipe Converter
Switch delimited text between CSV, TSV, pipe, and semicolon — with proper RFC-4180-style quoting and auto-detection.
Convert
Excel (XLSX) to CSV, JSON & Markdown
Open an .xlsx workbook in the browser and export any sheet as CSV, JSON or a Markdown table — the file never leaves your device.
File
CSV ↔ JSON Converter
Convert CSV to JSON and JSON back to CSV, with a delimiter option.
File
CSV → HTML / Markdown / JSON Table
Convert CSV to an HTML <table>, a Markdown table, or a JSON array of objects — auto-detects the delimiter.
Convert
Fixed-Width Text Parser to CSV / JSON
Split fixed-width / fixed-column text into fields by column widths and export as CSV or JSON, in your browser.
Convert
xz (.xz) Stream Inspector
Read an .xz container: stream header, every block header and filter chain, the index and the footer — with the true uncompressed size, unpacking nothing.
File