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

Gzip JSONL

updated 28 July 2026

Compress a JSONL file to .jsonl.gz without leaving the browser. Uses the native CompressionStream API, so the bytes are real gzip — the same file you would get from gzip on the command line — and the report tells you the exact compressed size before you upload anything.

Compress

Drop a .jsonl file here, or Up to 1 GB · in your browser

Why JSONL compresses so well

Every line of a JSONL file repeats the same key names. Gzip's sliding window sees {"timestamp":…,"level":…,"message":…} over and over and encodes the repeats as short back-references. That is why a 100 MB log file routinely becomes 8 MB, and why measuring the compressed size is worth doing before you decide the file is too big to upload.

Two practical consequences:

Browser support and the limits

CompressionStream is available in Chrome and Edge 80+, Safari 16.4+ and Firefox 113+. On an older browser the tool says so rather than silently producing something wrong.

Everything happens in memory, so the practical ceiling is browser memory rather than any limit here — a few hundred megabytes is fine on a normal machine. For genuinely large files, gzip -9 file.jsonl in a terminal is still the better tool; this page exists for when you want the number before committing, or you do not have a shell handy.

Privacy

Nothing is uploaded. The whole thing runs in this tab, in your own browser. That matters here more than on most tool sites — training data is usually the most sensitive file a team owns.

Frequently asked questions

Can it decompress a .gz file?

Drop the .gz onto the drop zone and the browser decodes it as text if it can. Pasting gzip bytes into the text pane cannot work — the bytes are not text and the clipboard mangles them.

Why can't the compressed output be shown in the pane?

Because gzip output is binary. Rendering it as text would corrupt it, so the pane holds the size report and the Download button gives you the real bytes.

What compression level is used?

Whatever the browser's implementation defaults to — the API exposes no level control. It is close to gzip -6. For the last few percent, use gzip -9 in a shell.

Should I use gzip or zstd?

Gzip if compatibility matters — everything reads it. Zstd compresses better and faster but is not available as a browser API, so it is not offered here.

Related tools