JSONL Viewer
View JSONL (newline-delimited JSON) files in a paginated table. Paste up to thousands of lines, search, filter, expand individual records. Files never leave your browser.
What is this for?
JSONL (also called NDJSON — newline-delimited JSON) is the de facto format for LLM training data, audit logs, event streams, and batch API outputs. One JSON object per line, no enclosing array. It's append-friendly, parses line by line, and survives partial corruption. Reading it as a human is painful though — you want a table, not a wall of curly braces. This tool gives you that table in your browser. Nothing uploaded; the file gets read with the browser's FileReader and parsed on the spot.
When to use it
- Inspecting LLM training data. A fine-tuning dataset is typically
{"messages": [...]}per line. Skim the corpus, spot-check class balance, find the one outlier row that's failing your trainer. - Reading OpenAI / Anthropic batch outputs. Both providers return batch results as JSONL — one line per request, with status and content. View at a glance which requests succeeded.
- Reviewing audit logs. Application logs in JSONL are common; this tool surfaces them in a table for ad-hoc analysis without leaving the browser.
- Sanity-checking event streams. Kafka / Kinesis dumps often land as JSONL. Quick paginated view, no jq required.
- Converting JSONL → CSV. Use the export button when you want to drop the data into a spreadsheet.
How the parsing works
- Each non-empty line is parsed independently as JSON. Empty lines are ignored.
- If a line fails to parse, it appears as a red row with the parse error — the rest of the file continues. This is intentional: one bad line shouldn't lose you the other thousand.
- Columns are auto-detected from the union of keys in the first 100 valid rows, sorted by how often they appear. Rare keys past row 100 still appear in the data but won't get their own column.
- Nested objects and arrays show as a clipped JSON snippet in their cell. Click the row to see the full pretty-printed JSON.
Common gotchas
- JSON array ≠ JSONL. If your file looks like
[{...}, {...}, {...}]with commas between objects, that's a JSON array, not JSONL. Strip the outer brackets and replace commas with newlines, or just use a JSON viewer. - Pretty-printed JSON is not JSONL. If each "object" spans multiple lines, the parser will see broken fragments. JSONL is strictly one object per line.
- Mixed-shape rows are fine but messy. If half your rows have
contentand the other half havetext, you'll get two columns and lots of blanks. Often this is what you want; sometimes it points to a data-cleanup bug. - Very large files. The whole file gets parsed in memory; ~50–100 MB is fine on modern laptops, beyond that things slow down. For multi-gigabyte logs, use a streaming CLI tool.
- Privacy. Files never leave the page. The FileReader reads bytes into JS memory; no network request is made.