Gzip JSONL
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
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:
- Do not strip keys to save space if the file will be compressed anyway — repeated keys are nearly free after gzip. Strip them to save parsing time, not bytes.
- Sorting can help. Grouping similar records together (with Sorter) puts similar text within the compression window and can shave a few more percent.
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.