AI DEVELOPMENT WORKSPACE
JSONL Validator
Validate independent JSON records with line-specific diagnostics.
Input is processed on this site only when you run the tool. The application does not save inputs or results.
input.txt
Result result.json
A little clarity goes here.
Run the tool to see your result.
Result preview
UTF-8 text, at most 65536 bytes per input. Tab leaves the editor. Plain text disables syntax colors. Browser textareas may normalize line endings to LF.
{"validate":{"inputMode":"text","options":{"blankLines":{"type":"enum","values":["reject","ignore"],"default":"reject"}},"inputLabels":[]}}{"validate":{"input":"{\"id\":9007199254740993}\n{\"id\":2}\n","options":{"blankLines":"reject"}}}A QUICK WALKTHROUGH
A familiar workflow,
with room to focus.
Paste one complete JSON value per line.
Choose whether blank physical lines reject or are explicitly ignored.
Validate and read errors by physical line number.
When to use JSONL Validator
Check a newline-delimited dataset fixture and locate invalid records by physical line before importing it into another system.
Read the result
Valid means each considered line is supported JSON, not that it matches a dataset schema. Ignoring blanks is an explicit mode; line diagnostics retain physical numbering.
SEE IT IN PRACTICE
Worked examples
Sample input. A result you can inspect.
Validate example
Input
{"id":9007199254740993}
{"id":2}
- Blank lines
- Reject blank lines
Expected result
{"valid":true,"lines":2,"records":2,"ignoredBlankLines":0,"errors":[]}{"kind":"validation","title":"JSONL is valid","tone":"success","metrics":[{"label":"Records","value":"2"},{"label":"Physical lines","value":"2"},{"label":"Ignored blank lines","value":"0"}],"columns":["Line","Issue"],"rows":[],"note":"Line numbers refer to physical lines in the input.","schema":1}Formats, limits and common errors
Check the reported line for invalid_json, duplicate_key, blank_line, line_too_large or complexity_limit. This does not validate a dataset-specific schema.
- At most 65,536 UTF-8 bytes, 1,000 physical lines and 16,384 bytes per line excluding CRLF. One terminal LF adds no empty record. Empty input is an empty sequence.
- Every nonblank line is a complete JSON value, not necessarily an object. Default blank-line policy rejects; Ignore skips space/tab/CR-only lines. No BOM, record-schema inference or multiline records.
- Depth at most 64 and 10,000 aggregate parsed values. Duplicate decoded keys reject a record. Validation reports fixed codes and one-based physical line numbers without echoing invalid data. Budget exhaustion can reject the whole request.
- Input: 65,536 UTF-8 bytes per text field. Output: at most 524,288 UTF-8 bytes; serialized responses have a separate 1 MiB ceiling. Size/work failures return no partial result.