NDJSON / JSONL Validator
Drop in an NDJSON or JSONL file and this tool parses every line as its own JSON value. You get a count of valid, invalid, and blank lines, a green all-clear when the whole file checks out, and a table listing the exact line number and parse error for anything that fails. When every line is a JSON object it also reports whether the objects share a consistent set of top-level keys. The file is read entirely in your browser and never uploaded.
How to validate an NDJSON or JSONL file
- Drag a .ndjson or .jsonl file onto the box, or click to browse for one.
- Read the summary: total, valid, invalid, and blank line counts.
- If anything failed, scan the error table for the line number and message.
Examples
A log export with one broken line
{"event":"login"}
{event:"logout"}
{"event":"ping"}3 lines, 2 valid, 1 invalid. Error on line 2: unexpected token.
Frequently asked questions
What is NDJSON / JSONL?
NDJSON (newline-delimited JSON) and JSONL (JSON Lines) are the same idea: a text file where each line is a complete, independent JSON value, usually an object. It is a common format for logs, data exports, and streaming records because a file can be read and validated one line at a time.
Is my file uploaded anywhere?
No. The file is read and validated entirely in your browser using JavaScript. Nothing is sent to a server, so even sensitive logs or data exports stay on your device.
How does validation work?
The file is decoded as UTF-8 and split on newlines. Each non-blank line is parsed with the same JSON engine your browser uses. A line is valid if it parses and invalid if parsing throws, and the error message is captured along with the line number.
Are blank lines treated as errors?
No. Blank or whitespace-only lines are allowed and counted separately, not as failures. This matches how most NDJSON readers behave, where stray blank lines between records are skipped.
What does the consistent keys check mean?
When every line is valid and every value is a JSON object, the tool compares the top-level keys of each object. It reports whether they all share the same key set and lists the keys common to every record, which helps spot rows with missing or extra fields.
Why does it only show the first errors?
To stay fast on large or badly broken files, the error table is capped at the first 50 failures. The total invalid count still reflects every bad line, so you always know the full scope even when only the first errors are listed.
Related tools
JSON File Validator
Validate a JSON file in your browser, pinpoint syntax errors by line and column, and analyze its structure: depth, keys, value types, and size. Private.
File Type Identifier
Find out what a file really is from its magic bytes, not its extension. Detects images, audio, video, archives, fonts, and more in your browser. Private.
CSV File Inspector
Inspect a CSV file in your browser: detect the delimiter, encoding and BOM, count rows and columns, guess the header, and preview sample rows. Private.
Base64 File Encoder
Encode any file to Base64 and a data URI in your browser. Drop a file to get the raw Base64 and a ready data: URI to copy. Nothing is uploaded.
CBOR Decoder
Decode a CBOR file (RFC 8949) to readable JSON in your browser. Handles integers, byte strings, arrays, maps, tags, and floats. Nothing is uploaded.
ELF Header Inspector
Drop a Linux or Unix binary to read its ELF header: 32 or 64-bit, endianness, file type, CPU architecture, OS ABI and entry point. Runs in your browser.