Contact

Tools  /  JSON  /  JSONL Formatter / Validator

JSONL Formatter / Validator

Validate, reformat, filter, sort and deduplicate JSON Lines (NDJSON) -- convert JSONL to/from a JSON array, with per-line error reporting and a schema summary across all lines.

What this tool does

Paste JSON Lines — one JSON value per line, the format used for LLM fine-tuning datasets, log exports, and streaming records — and every line is checked and processed independently, since a single malformed line should not make the whole file unreadable the way it would as one big JSON document.

Finding the broken line, fast

Every non-blank line is parsed on its own, and any that fail are listed by line number with the actual parser error. Clicking a listed error jumps the cursor straight to that line in the input and scrolls it into view, instead of counting lines by hand in a file that might run to thousands of them.

Querying the data, not just viewing it

A filter field accepts a real expression evaluated against each record — it.age > 18, for instance — narrowing the output to only the lines that match, rather than a fixed set of preset conditions. Records can also be sorted by a dot-path key and deduplicated, and the result converts to a JSON array (compact or pretty) or back to reformatted JSONL, whichever the next step needs.

Seeing the shape of a whole file at once

A summary lists every key that appears across all valid lines, its type, and how many of the lines actually contain it — useful for a fine-tuning dataset or an exported log file where a field might be present in most records but missing from a few, something that is very hard to notice by scrolling through the raw lines themselves.

Privacy

Parsing, filtering, and conversion all happen in your browser. Nothing you paste, drop, or load from a file is sent to a server.

Frequently asked questions

Is my data uploaded anywhere?
No. Parsing, filtering, sorting, and conversion all run locally in the browser — nothing is sent to a server.
How is a broken line found in a large JSONL file?
Every non-blank line is validated independently and listed by line number if it fails, with the actual parser error shown. Clicking a listed error jumps straight to that line in the input instead of requiring a manual line count.
What does the filter field actually accept?
A real expression evaluated against each parsed record, such as it.age > 18 or it.status === "active" — not a fixed list of preset conditions, so the filter can check whatever the data actually needs checked.
Can it convert between JSONL and a regular JSON array?
Yes, in both directions — JSONL input converts to a JSON array (compact or pretty-printed), and the output format can also be set back to reformatted JSONL.
What is JSONL commonly used for?
It is the standard format for LLM fine-tuning datasets, where each line is one training example, as well as for log exports and streaming record formats generally, since a new record can be appended as one more line without touching anything already written.
Can duplicate lines be removed automatically?
Yes — deduplication compares the actual parsed value of each line rather than the raw text, so two records that are equivalent but formatted slightly differently are still recognized as duplicates.
Theme Accent