jsonlkit.com
JSONL (JSON Lines) utilities, in the browser
Say hi →

Free JSONL Toolkit, in Your Browser

browser-only · no upload · no signup · Up to 1 GB · in your browser · updated 22 May 2026 · press ⌘ K to search

A growing toolkit of free JSONL (JSON Lines) utilities — every operation runs entirely in your browser tab. Your files are never uploaded; there is no server component touching your data, no file-size cap beyond your browser's memory, and no account to sign up for. Pick a tool below, drop your file, and go.

📘 New to JSONL? Start with What is JSONL, the format specification, or annotated examples. ⌨ For files bigger than 1 GB or for shell pipelines, the jsonlkit CLI streams line-by-line — same logic, MIT.

Fixing a broken file

The first thing to reach for is the JSONL auto-fixer — paste a broken file and get a clean one back. It repairs trailing commas, single quotes, smart quotes, NaN, BOMs, unquoted keys, comments, and leading garbage; anything it can't repair is reported with line, column, and a suggested fix. If you want to inspect the damage line-by-line first, the JSONL validator flags every bad row with the exact error and a hint on how to repair it.

Converting between formats

To turn a nested NDJSON export into a flat table, the JSONL → CSV converter flattens keys using dot.notation so you can open the data in Excel, Google Sheets, or BigQuery. Moving between a single [...] array and one-record-per-line streams is easy with the JSONL ↔ JSON converter, which handles the split or merge without choking on large files. To hand data to a warehouse, the JSONL ↔ Parquet converter produces a compressed columnar file using DuckDB-WASM in the browser — and reads Parquet back to JSONL too.

Looking at a JSONL file

Sometimes you just want to see the data. The JSONL viewer lets you inspect, validate, and search through records directly in the browser. If you're eyeballing raw logs or datasets, the formatter pretty-prints each line with a configurable indent or minifies everything back down to one record per line. Need to know the shape of an unfamiliar file? The JSON Schema inferrer walks every record and emits a Draft-07 schema with required fields, union types, and enum detection, while the dataset stats panel gives you row count, duplicate rate, and per-field fill rate at a glance.

Reshaping a dataset

A handful of tools for when the file isn't in the shape you want. The JSONL deduplicator drops repeats by full line, by canonical object, or by a chosen key path like id or user.email. When the file is too big for whatever's downstream, the splitter / merger chunks it by line count or into N equal pieces, and merges several JSONL files back into one.

AI fine-tuning datasets

If you're training a model, jsonlkit has a dedicated validator for every major provider: OpenAI, Anthropic (Claude), Google Gemini, Llama / ShareGPT, and Mistral — each catching the format-specific gotchas that cause failed training jobs (wrong role names, missing top-level system strings, broken alternation, wrong content arrays). Author rows visually in the dataset editor, split cleanly with the train/val/test splitter, find duplicate prompts that inflate cost with the system-prompt deduper, and estimate spend with the token counter.

Querying and slicing

For day-to-day data wrangling: the jq-style query playground runs path access, pipes, select, map, sort_by, and group_by right in your browser — no install. If you don't want to learn jq, the no-code filter gives you a UI for the same job. Sort by any key path, sample N records (random, head/tail, stratified), find & replace across every record, diff two files by key, and flatten nested keys into dot.notation when a flat table is what the downstream tool needs.

What they have in common

Everything runs in your browser. The files you drop or paste never leave your machine — there is no server component handling data. I can't see your records because they were never sent to me. That means no size cap beyond your browser's memory (typically 500 MB to 1 GB per file on a laptop), no account required, and nothing for me to leak. See the privacy policy for the longer version.

Sensible defaults, no hidden magic. Values stay as they are unless you explicitly ask for a change (so 007 stays "007" and doesn't turn into the number seven). Quoting follows the JSONL spec, line endings are normalized but preserved on output, and nothing gets silently transformed.

Free to use, with no warranty. Read the terms of use before relying on the output for anything load-bearing. Bug reports, corrections, and feature requests are always welcome — drop me a line.

— S., [email protected]