Practical usage guide
What this tool does
JSONL Validator checks JSON Lines and NDJSON one physical line at a time. Every non-empty line must contain one complete JSON value, which allows malformed records to be reported with their exact line number. The format is common in agent traces, evaluation sets, batch APIs, logs, and data pipelines.
JSONL is not a pretty-printed JSON array. Records can each be valid while still using incompatible fields or value types. This tool checks line boundaries and JSON syntax, optionally requires objects, and can normalize valid records; dataset schemas, duplicates, role ordering, and domain correctness need separate review.
Quick start
Paste raw line-delimited records
Do not wrap records in square brackets or add commas between lines. Keep every complete object or value on one physical line.
Fix the earliest reported line first
A broken quote or brace can make later diagnostics confusing. Repair the first invalid line, then run validation again.
Review record consistency after syntax passes
Compare keys, value types, IDs, labels, and required fields across representative records before submitting a batch or dataset.
Common use cases
Prepare agent evaluation data
Find malformed cases in evaluation, retrieval, conversation, or training datasets before an upload or long-running job fails.
Inspect traces and event streams
Validate exported agent events, audit records, and log fragments while preserving the physical line numbers used by other diagnostics.
Check batch request files
Review NDJSON requests for asynchronous APIs, bulk indexing, or database imports before submitting the complete file.
Limitations and important notes
Pretty-printed records are not valid JSONL
An object spread across several lines can be valid JSON but is not one JSONL record. Minify each record before placing it on its own line.
Syntax does not guarantee consistent records
Valid lines may omit required fields or use incompatible types. Apply JSON Schema or a dataset-specific validator when uniform records are required.
Large inputs remain memory-bound
Browser mode is local and the API has a request-size limit. Extremely large files, long lines, or encoding problems should be handled with streaming tooling.