JSONL stats

Paste newline-delimited JSON and profile record count, key coverage, value types, distinct scalar values, samples, and numeric/string ranges — as text, JSON, Markdown, or CSV.

Try:
JSONL profile

About this tool

JSON Lines and NDJSON files are common in logs, event streams, warehouse exports, and model datasets. This profiler gives you a quick schema-and-quality snapshot without loading the file into a database: record count, key presence frequency, coverage percentage, JSON value types, distinct scalar counts, sample values, numeric ranges, and string length ranges.

Set depth to 1 for top-level keys or increase it to inspect dotted nested paths such as user.id and array element paths such as items[].sku. Choose text for a quick read, JSON for automation, Markdown for documentation, or CSV for spreadsheets.

Worked example

Input:

{"id":1,"status":"ok","latency_ms":12}
{"id":2,"status":"error","latency_ms":940,"err":{"code":"timeout"}}
{"id":3,"status":"ok","latency_ms":31}
{"id":4,"status":"ok"}

Default text output starts with:

records: 4 · lines read: 4 · invalid: 0
record types: object 4
keys: 4 (depth 1)

The latency_ms row shows present 3, coverage 75%, number 3, and numeric min/max/mean values.

Limits and edge cases

FAQ

What is the difference between JSONL and NDJSON?

They are the same practical shape for this tool: one JSON value per line. The line-by-line layout lets logs and data pipelines append records without wrapping the whole file in a JSON array.

Does key coverage count array occurrences?

No. Coverage counts records. If one record has an items array with ten objects that all contain sku, the nested path items[].sku is counted as present in one record, not ten occurrences.

Can this infer a formal JSON Schema?

No. It reports observed key coverage, types, distinct counts, samples, and simple value ranges. That is useful input for schema design, but it does not generate required/optional JSON Schema constraints automatically.

Why are top-level arrays or strings counted but not listed as keys?

The record-type summary includes every valid JSON value. Per-key statistics only apply to object records because arrays and scalars do not have named fields at the top level.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool jsonl-stats '{"id":1,"status":"ok","latency_ms":12}
{"id":2,"status":"error","latency_ms":940}'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/jsonl-stats/?input=%7B%22id%22%3A1%2C%22status%22%3A%22ok%22%2C%22latency_ms%22%3A12%7D%0A%7B%22id%22%3A2%2C%22status%22%3A%22error%22%2C%22latency_ms%22%3A940%7D&depth=1&format=text&sort=frequency&max_keys=0&samples=2&value_stats=true&distinct=true&invalid=report

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.