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

JSONL Splitter / Merger

updated 1 May 2026

100% client-side. No upload.

Split

Drop a .jsonl file here, or

JSONL Splitter / Merger

Split an oversized JSONL into smaller files (by line count or N equal chunks) or concatenate a folder full of JSONL files into one. Useful when your file is too big for a target system or scattered across exports.

Merge

Drop multiple .jsonl files; the tool concatenates them in the order added.

Drop one or more .jsonl files here, or

Splitting strategies

By line count

Produces a sequence of files, each containing exactly the chosen number of lines (the last file may have fewer). Use this when the downstream system has a hard line limit per file — for example, OpenAI fine-tune jobs accept files up to a fixed size, and most data warehouses prefer load files in the 100k-line range to keep individual loads fast.

Into N chunks

Splits the input as evenly as possible across N output files. Use this when you're parallelizing work — say, sending each chunk to a different worker — and you want the files to all be roughly the same size rather than ending with a tiny tail file.

Merging

The merge mode is a streaming concat: each file's lines are appended in queue order with exactly one \n between records. Empty lines are skipped (per the JSONL spec — see the JSONL Validator for why blanks cause issues), and you can optionally drop byte-identical duplicate lines as the merge runs. For richer dedupe (canonical compare or key-path), pipe the output through the JSONL Deduplicator.

Tips & common pitfalls

Example

Input (10 records), split by line count at 4:

Same input split into 3 chunks:

(Same shape in this case; the split-by-N math chooses ceiling-per-chunk to keep file count exact.)

Frequently asked questions

Is the split lossy?

No. The full input round-trips: concatenating all output files (in order) reproduces the input exactly, modulo blank-line handling.

Why don't downloads start automatically?

Browsers throttle programmatic downloads — chaining a hundred of them in a loop typically gets blocked. Instead the tool gives you a list of links and you click them as you need. If you need a single archive, do the merge in reverse with another tool.

Can it preserve a header line across splits?

JSONL has no header concept (unlike CSV), so no. If your file is actually CSV-flavoured JSON-Lines with a leading metadata record, you'll need to handle that record manually after splitting.

Is my data sent to a server?

Never. Splitting and merging both happen in-browser via Blob URLs. See the privacy policy.

Related tools