Streaming NDJSON Validator

Check a JSON Lines file line by line in the browser and report the physical line of every broken record.

Files stay on your device No sign-up Free to use
How this works

The tool runs in this browser. Your file or text is not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

Privacy details

Validate NDJSON controls

Drop your text file here

or choose one from your device

One UTF-8 file up to 64 MB. It is read in chunks in your browser, one line at a time, and is never uploaded.

    Turn this on for a strict record file. A line holding a number, a string, null or an array is then reported.

    This setting is about blank lines inside the file, such as the empty line left by two line breaks in a row. A final line break at the end of the file is not counted as a blank line, and a file with no final line break still has its last line read as a record.

    Reading stops at this many lines. The limit is 5,000,000 lines.

    How to use Streaming NDJSON Validator

    1. Choose the NDJSON or JSON Lines file. It is read in chunks in your browser.
    2. Leave Every line must hold an object off for a general check, or turn it on for a strict record file.
    3. Decide whether an empty line is skipped or reported.
    4. Press Validate NDJSON and read the problem table, which lists the physical line number of each fault.

    Example: Streaming NDJSON Validator

    Find the one broken record in a four-line file.

    You add
    File: records.ndjson holding the lines {"id":1}, {"id":2}, {"id": nope} and {"id":4}, each on its own line. Every line must hold an object: off. Empty lines: Skip them.
    You get
    The page reports four lines, three records and one problem, and the table names line 3 with the message that the line is not valid JSON.

    Options

    Every line must hold an object
    Off by default, because JSON Lines only requires each line to be valid JSON. Switch it on when the consumer of the file expects one object per line, and a bare number, a string, null or an array is then reported.
    Empty lines
    Blank physical lines are skipped by default. Choose Report them if blank records would break the system that reads your file. A final newline ends the last record and does not create an extra blank record.
    Lines to check
    Reading stops at the number you set, so a very large file can be sampled. The default is 1,000,000 lines and the ceiling is 5,000,000.

    Supported inputs and limits

    One UTF-8 file up to 64 MB, read in chunks so the whole file is never held as text. One line is capped at 1,000,000 characters: a longer line is reported once and the rest of that line is discarded rather than buffered. Reading stops at the line limit you set and at the 64 MB byte ceiling, and the problem table lists the first 100 faults while the count stays complete. The text must be UTF-8; a character cut in half at the end of the file is reported rather than dropped. Strict mode requires one object per line and rejects arrays and bare values.

    Where your input is processed

    This tool processes your input in this browser. Your text and files are not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

    Why streaming changes what the page can promise

    The file is read in chunks and each complete line is checked separately. The page keeps only a bounded unfinished line and the first 100 problem details, while counting all problems. Oversized lines are reported and discarded until the next newline. You receive the report after the run finishes or reaches its configured limit.

    Questions about Streaming NDJSON Validator

    What is the difference between NDJSON and JSON Lines?

    Both use one JSON value per physical line. This page checks that shared structure and accepts a final record with or without a closing newline. It can also require objects or report blank lines when your reader needs stricter records.

    Why is the reported line number higher than I expected?

    The number counts every physical line from the first one, including blank lines and lines that hold invalid data. That is the number an editor shows next to the text.

    What happens to a file with one enormous line?

    The buffer stops at the per-line cap, the line is reported as too long, and the rest of that line is thrown away as it arrives so the page does not run out of memory.

    Can I check only the first part of a large file?

    Set Lines to check to a smaller number. Reading stops at that line, the report says so, and every line that was read has still been checked.

    Project manager: Tony Hines · Content updated 1 October 2026 · Report a problem