JSONL Viewer & Editor
Paste JSONL (JSON Lines) data — one JSON object per line. View as a sortable table.
How to use the JSONL Viewer
- Paste your JSONL data into the editor above, or drag and drop a
.jsonlfile. - Click Parse to validate each line and display the data as a sortable table.
- Explore the table — sort by clicking column headers, filter with the search box.
- Export — click "Copy as JSON" for a standard JSON array, or "Download .json" to save a file.
What is JSONL (JSON Lines)?
JSONL (JSON Lines, also called newline-delimited JSON or NDJSON) is a text format where each line is a separate, valid JSON object. Unlike standard JSON, there is no wrapping array and no commas between entries. This makes it ideal for streaming data, append-only logs, and processing files line by line without loading the entire document into memory.
JSONL is the standard format for OpenAI fine-tuning datasets, LLM evaluation results, structured logging systems like Bunyan and Pino, and data pipeline exports from tools like BigQuery and Snowflake. Despite its prevalence, most JSON tools reject JSONL as invalid — which is why a dedicated viewer exists.
Examples
LLM fine-tuning dataset
{"messages": [{"role": "system", "content": "You are helpful"}, {"role": "user", "content": "Hi"}, {"role": "assistant", "content": "Hello!"}]}
{"messages": [{"role": "system", "content": "You are helpful"}, {"role": "user", "content": "Bye"}, {"role": "assistant", "content": "Goodbye!"}]}Paste this into the viewer to see each conversation turn as a table row, making it easy to audit training data quality.
Structured application logs
{"timestamp": "2026-05-07T10:00:01Z", "level": "info", "message": "Server started", "port": 3000}
{"timestamp": "2026-05-07T10:00:05Z", "level": "warn", "message": "Slow query", "duration_ms": 2340}
{"timestamp": "2026-05-07T10:00:12Z", "level": "error", "message": "Connection refused", "host": "db.internal"}View logs as a sortable table — filter by level, sort by timestamp, find errors quickly.
Data pipeline export
{"user_id": "u_001", "event": "signup", "timestamp": "2026-01-15", "source": "google"}
{"user_id": "u_002", "event": "purchase", "timestamp": "2026-01-16", "amount": 49.99}
{"user_id": "u_001", "event": "purchase", "timestamp": "2026-01-17", "amount": 29.99}Common use cases
- Auditing LLM fine-tuning data — review prompt/completion pairs in OpenAI JSONL format before uploading.
- Reviewing evaluation results — view model eval outputs as a sortable table to spot patterns.
- Debugging structured logs — paste Pino, Bunyan, or custom JSON logs and filter by level or message.
- Inspecting data exports — explore BigQuery, Snowflake, or Athena JSONL exports without writing code.
- Validating JSONL files — find and fix malformed lines before processing.
- Converting JSONL to JSON — export as a standard JSON array for tools that don't support JSONL.
- Comparing datasets — use with the JSON Diff tool after converting to JSON.
Frequently asked questions
What is the difference between JSON and JSONL?
JSON is a single document — one object or array. JSONL is multiple JSON objects, one per line, with no wrapping structure. JSONL is easier to stream and append to, while JSON is better for nested data and API responses.
Can it handle large JSONL files?
The tool runs entirely in your browser. Most devices handle files with 10,000+ lines comfortably. For very large files (50,000+ lines), consider processing with command-line tools like jq.
How does it handle invalid lines?
Each line is parsed independently. Invalid lines are reported with their line number and error message. Valid lines are still displayed in the table — you do not lose data because of one bad line.
Can I convert JSONL to a JSON array?
Yes. Click "Copy as JSON" to get a standard JSON array on your clipboard, or "Download .json" to save it as a file. You can then use the JSON Formatter to clean it up.
Does it work with OpenAI fine-tuning format?
Yes. OpenAI's fine-tuning files use JSONL with a "messages" array per line. The viewer parses each line and shows the messages as a column in the table. For deeper inspection of each conversation, copy a row and paste into the JSON Viewer.
What about nested objects in JSONL?
Nested objects are displayed as JSON strings within table cells. The table gives you a high-level overview; for exploring nested structures, copy the JSON and use the JSON Viewer tree view.
Is my data sent anywhere?
No. All processing happens in your browser. Your JSONL data never leaves your machine.
Related Tools
Privacy & how it works
This tool runs entirely in your browser using JavaScript. Your JSONL data is parsed locally — nothing is uploaded to any server. The table, filtering, and sorting all happen client-side. You can verify this by disconnecting from the internet and using the tool offline.