ArrayKit

JSONL Viewer & Validator

Read, filter and check a JSONL file, with every problem reported against its line.

JSONL Viewer & Validator

Read, filter and check a JSONL file, with every problem reported against its line.

Conversation logs and datasets are read in the browser. Nothing is uploaded, and nothing is retained after you close the page.

Validate it as a training dataset

About JSONL Viewer & Validator

JSONL is where conversation logs, evaluation sets, training data and batch jobs all end up, and it fails in ways ordinary JSON does not. One bad line in the middle of fifty thousand good ones; a trailing blank; a file that is really a pretty-printed array with commas at the end of every line. “Invalid JSON” about a forty-megabyte file helps nobody, so everything here reports per line, with the line number an editor would show. Blank lines are skipped rather than counted as errors, and the array-pretending-to-be-JSONL case is detected and offered as a one-click conversion.

Features

  • Every failure reported against its line number
  • Blank lines skipped without shifting the numbering
  • Detects a pretty-printed array pasted as JSONL, and converts it
  • Every key across the records, with how many carry it
  • Filter by a dotted path, or across the whole record
  • Step through records one at a time, pretty-printed
  • Converts to a JSON array and back
  • Drop a file in, or paste it

How to use the JSONL Viewer & Validator

  1. Drop in a .jsonl file, or paste it
  2. Check the valid and invalid counts
  3. Filter to the records you care about
  4. Step through them, or export as an array

Example

Input

line 2: not json

Output

Unexpected token o in JSON at position 1

The other 49,999 lines are still parsed and usable.

Common errors & troubleshooting

  • Every line fails. — It is probably a pretty-printed JSON array rather than JSONL. That case is detected and a conversion is offered.
  • The line numbers do not match my editor. — They should — blank lines are skipped for parsing but do not shift the numbering, so a reported line is the line your editor shows.
  • My filter path finds nothing. — Paths are dotted, with numeric segments for array indices: messages.0.content. The key list above the filter shows what is actually present.
  • A huge file is slow. — Everything is parsed in the browser, so a very large file is limited by memory. Splitting it is faster than waiting.

Frequently asked questions

What is JSONL?
One complete JSON value per line, with no commas between them and no enclosing brackets. It streams and appends well, which is why logs and datasets use it, and it means a single malformed line does not invalidate the file.
Why does my file look like JSONL but fail?
Almost always because it is a pretty-printed array — one object spread over several lines, with a comma at the end of each. That is valid JSON and not valid JSONL, and it is detected here with a conversion offered.
How does the path filter work?
Dotted segments, with numbers for array indices. The value at that path is searched as a case-insensitive substring, so filtering on the first message's content is one expression.
Are trailing blank lines a problem?
No. A file ending with a newline is normal and correct; blank lines are counted separately and never reported as errors.
Is my file uploaded?
No. Everything is parsed in the browser, which matters for the usual contents of a JSONL file — conversation logs and training data are among the most sensitive files a team has.

Related tools

More AI & Agents tools

See all AI & Agents tools · All tools