JSONL viewer for logs, evals and traces

Drop a .jsonl or .ndjson file and every line becomes a row. Nested fields turn into columns you can filter, chart and query, right in your browser.

Drop a file to explore it
JSONL, up to 1.5 GB. It opens in your browser and stays there until you share it.

No file handy? Open GSM8K math eval, test split (1,319 rows, 750 KB).

One line, one row

Keys become columns. A key that shows up on some lines and not others gets its own column, empty where it's missing. Nested objects flatten into dot paths like response.usage.total_tokens, lists stay lists, and values that change shape from line to line are kept as JSON text instead of dropped.

String fields that hold JSON get expanded the same way, which helps with logs that store the payload as an escaped string.

Built for eval runs and agent traces

Model evals, batch API results, webhook dumps and traces are usually JSONL. Filter to the failures with status:error, see the spread of latency_ms in its column chart, and click a row to read the full record as a tree.

Query it

Plain words search every text column. field:value, field:>20, field:10..20, -field:* (empty) and OR narrow it down. Or run DuckDB SQL: SELECT model, avg(score) FROM data GROUP BY 1.

Share a run

Push the file and get a link your team can open: curl -T results.jsonl https://rows.page. Push the next run to the same link and the page counts the rows that are new, gone and changed. Agents can do the same over MCP.

Questions

What's the difference between JSONL and NDJSON?
None in practice. Both mean one JSON value per line, and both open here.
Is my file uploaded?
No. Opening a file reads it inside your browser tab. It only leaves your machine if you share it or push it with curl.
What if lines have different keys?
Every key gets a column. Lines without that key show an empty cell.
How big can the file be?
About 1.5 GB of data per tab. JSONL is verbose, so that's fewer rows than the same data as Parquet.

Open other formats

Pushing data from a script or agent? Read the docs.