How to open JSONL and NDJSON files
JSONL and NDJSON store one complete JSON value per record line. They are common in logs, event exports, model datasets, and streaming pipelines because a producer can append another record without rewriting one giant JSON array.
In JSON All-in-One, recognized JSONL and NDJSON sources are normalized into one canonical JSON array for the workspace. That makes later tree, JQ, JSONPath, schema, editing, and export workflows behave like array workflows, not CLI streaming mode.
JSON array versus line-delimited records
The same events can be written as a normal JSON array or as JSONL/NDJSON. In the array version, commas and brackets define one top-level value. In the line-delimited version, each non-empty line is its own JSON value.
The names are usually practical aliases in developer workflows: .jsonl is often called JSON Lines, while .ndjson expands to newline-delimited JSON. JSON All-in-One recognizes .jsonl and .ndjson as strict line-delimited suffixes.
[
{ "id": "evt_1", "type": "signup", "user": { "id": "u_1" } },
{ "id": "evt_2", "type": "paid", "user": { "id": "u_1" } }
]{"id":"evt_1","type":"signup","user":{"id":"u_1"}}
{"id":"evt_2","type":"paid","user":{"id":"u_1"}}Valid records and common mistakes
A newline inside a JSON string must be escaped as \n; it is not a physical line break inside the record. A blank line can be ignored by the normalizer, but a partial object line should fail because it is not a complete JSON value.
JSON All-in-One also has a relaxed NDJSONC mode for .jsonlc and .ndjsonc, where JSONC comments and trailing container commas are accepted. Treat that as a separate relaxed format. If a data partner asked for strict NDJSON, send strict records.
{"id":"evt_3","message":"first line\nsecond line"}{"id":"evt_4","message":"first line
second line"}Open the file and move between records
Open a .jsonl or .ndjson file from Chrome or from the JSON All-in-One workspace. With no content-type hint, the detector needs at least two complete records before a line-delimited sniff is conclusive. A source that starts with [ is treated as an ordinary JSON or JSONC array, not as NDJSON.
Once loaded, the workspace model is an array. The first record is $[0], the second is $[1], and nested fields are selected from those array items. That is why a JSONPath like $[?@.type == "paid"].user.id makes sense in the product.
$[?@.type == "paid"].user.idmap(select(.type == "paid") | {event: .id, user: .user.id})When conversion helps
JSONL can be read in the workspace without first converting it to a pretty JSON array. Conversion is useful when another tool expects one JSON document, when you want to generate a schema from the combined samples, or when an export needs a root array.
The reverse is also true: export back to line-delimited records only when the receiving system expects one record per line. That export workflow is separate from opening and reading JSONL.
- Use JSONPath for selection when you only need matched values.
- Use JQ when you need to reshape records before export.
- Use schema generation when several records show the optional and nullable fields you care about.
Troubleshooting
If only one line is present, the input may be valid JSON but not a useful line-delimited sample for sniffing. Add a second complete record or use a recognized .jsonl or .ndjson suffix. If a record reports a line number error, inspect that line as a complete JSON value first.
If a copied query fails, confirm that it targets an array. Many CLI JQ examples for NDJSON use streaming or slurp flags outside the expression itself. In JSON All-in-One, write the expression for the normalized array model.
Next step
After the file opens, the most useful next action is usually a small filter: find the event type, customer id, status, or error code that started the investigation. For transformation examples, continue with JQ examples for filtering and transforming JSON.