This page is also available in Dutch. Bekijk in het Nederlands

Compression that reads your data first.

invariantity looks at the structure in your data before choosing how to compress it. Different data compresses differently, so we measure by domain and publish the results below, including the worst one.

invariantity — measured compression benchmarks INV-01 Rev A Sheet 01 of 06
No.Data domainMeasured resultRemark
01Structured data (JSON)16.8×Full 912 MB GitHub Archive event dump, not a sample
02Backups and version history71.4×20-version incremental backup set, cross-file dedup
03vs. zstd, xz, bzip2, brotli (max level)1 loss (of 38)35 wins, 2 ties elsewhere; up to 2.20× tighter on the best case (Apache logs). The one loss is 0.76% on a 21 KB object file.
04Documents (PDF)3.8–6.1×Varies by how much of the PDF is already-compressed image data
05Log files (Apache, HDFS, Linux, OpenSSH, Spark, Zookeeper, HealthApp)12.2–56.2×7 real production log formats from the LogHub benchmark set
06Already-compressed binary media (JPEG, PNG)≈1.0×The floor. Measured on all 24 Kodak PNGs + 4 JPEGs. On 10 of 24 PNGs, a specialized codec still finds a small residual gain (0.04–0.85%) that this build does not chase.

All values are measured, not projected, logged run by run. Row 06 is the worst case and it is printed on purpose, including where it currently falls slightly short.

See the per-file data behind rows 01–06 (38 files vs. zstd/xz/bzip2/brotli, plus all 28 Kodak floor images)

Calgary corpus (general text & code, 18 files)

FileOriginalinvariantityRatioBest of zstd/xz/bzip2/brotli
bib111,26123,1974.80×4.05× (bzip2)
book1768,771208,2203.69×3.31× (bzip2)
book2610,856136,9914.46×3.88× (bzip2)
geo102,40048,2202.12×1.94× (brotli)
news377,109101,7463.71×3.34× (brotli)
obj121,5049,4722.27×2.30× (brotli, loss)
obj2246,81461,4724.01×4.02× (xz, tie)
paper153,16113,3653.98×3.44× (brotli)
paper282,19920,6383.98×3.31× (brotli)
paper346,52612,4343.74×3.18× (brotli)
paper413,2863,7183.57×3.10× (brotli)
paper511,9543,7203.21×2.93× (brotli)
paper638,1059,7963.89×3.42× (brotli)
pic513,21633,90915.13×12.87× (xz)
progc39,61110,0383.95×3.41× (brotli)
progl71,64612,1715.89×5.12× (brotli)
progp49,3798,6655.70×5.00× (brotli)
trans93,69513,6726.85×6.08× (brotli)

Canterbury corpus (general text, code, spreadsheet, fax, 11 files)

FileOriginalinvariantityRatioBest of zstd/xz/bzip2/brotli
alice29.txt152,08936,2624.19×3.52× (bzip2)
asyoulik.txt125,17933,8093.70×3.16× (bzip2)
cp.html24,6036,3133.90×3.57× (brotli)
fields.c11,1502,2954.86×4.10× (brotli)
grammar.lsp3,7211,0263.63×3.31× (brotli)
kennedy.xls (spreadsheet)1,029,74426,70638.56×19.85× (xz)
lcet10.txt426,75492,1644.63×3.96× (bzip2)
plrabn12.txt481,861131,3633.67×3.31× (bzip2)
ptt5 (fax scan)513,21633,90915.13×12.87× (xz)
sum38,2409,5164.02×4.02× (xz, tie)
xargs.14,2271,3243.19×2.89× (brotli)

Documents (PDF)

FileOriginalinvariantityRatioBest of zstd/xz/bzip2/brotli
reymont (Silesia corpus, Polish novel)6,627,2021,085,9996.10×5.32× (bzip2)
attention.pdf (public arXiv paper)2,215,244584,2843.79×2.15× (brotli)

Log files (LogHub production log formats, 7 files)

FileOriginalinvariantityRatioBest of zstd/xz/bzip2/brotli
Apache_2k.log171,2393,04656.22×25.54× (brotli)
OpenSSH_2k.log225,2165,22243.13×23.10× (xz)
Linux_2k.log216,4856,72832.18×21.62× (xz)
Spark_2k.log196,2686,68829.35×21.63× (xz)
HealthApp_2k.log187,4567,38825.37×15.49× (brotli)
Zookeeper_2k.log279,89111,45024.45×18.87× (bzip2)
HDFS_2k.log287,84823,50512.25×7.02× (brotli)

Already-compressed binary media (the floor, all 28 Kodak reference images)

FileOriginalinvariantityRatioBest of zstd/xz/bzip2/brotli
kodim01/05/12/18.jpg (4 JPEGs, avg)161,864 avg161,880 avg1.00×≤1.00× (brotli, no meaningful difference)
14 of 24 PNGs (avg, no meaningful gap)621,477 avg621,493 avg1.00×≤1.00× (16-byte store header only)
kodim02.png617,995618,0111.00×1.00× (xz, 0.22% smaller)
kodim04.png637,432637,4481.00×1.00× (xz, 0.28% smaller)
kodim08.png788,470788,4861.00×1.01× (bzip2, 0.85% smaller)
kodim09.png582,899582,9151.00×1.00× (xz, 0.22% smaller)
kodim10.png593,463593,4791.00×1.00× (xz, 0.05% smaller)
kodim15.png612,582612,5981.00×1.00× (xz, 0.04% smaller)
kodim18.png780,947780,9631.00×1.01× (xz, 0.73% smaller)
kodim19.png671,476671,4921.00×1.01× (xz, 0.80% smaller)
kodim22.png701,970701,9861.00×1.00× (xz, 0.36% smaller)
kodim24.png706,397706,4131.00×1.00× (xz, 0.17% smaller)

Once invariantity recognizes data as already compressed, it stores it as-is rather than spending time trying to shrink it further. On the 4 JPEGs and 14 of the 24 PNGs that costs nothing beyond a 16-byte header. On the other 10 PNGs, a general-purpose codec still finds a small residual gain (0.04–0.85%) that this build does not chase — we are looking at whether a cheap second-pass check is worth adding.

02 · Where it pays off

Cloud storage & model hubs

Petabytes of user files and artifacts, most of them structured or repetitive. Across 38 real files tested at max settings against standalone zstd, xz, bzip2, and brotli, invariantity won 35 and tied 2, with a single 0.76% loss on one file — so switching is rarely a downside on the files those tools already handle well.

Backup & disaster recovery

Version history is the most redundant data there is, which is why it is our best measured result at 71.4x on a 20-version backup set. Longer retention in the same footprint, and restores move less data over the wire.

Data pipelines & warehouses

JSON events are highly structured, measured at 16.8x on a full 912 MB dump, not a favorable sample. Application logs are even more repetitive: up to 56.2x on real Apache logs. Compressing them well cuts both the storage bill and the egress bill, at every hop where the data sits or moves.

03 · The floor

We show the floor on purpose

On already-compressed binary media such as JPEG and PNG, invariantity measures close to 1.0x across the standard Kodak reference set (24 PNGs, 4 JPEGs). That is the honest floor, and it is on this page because a benchmark table without a worst case is an advertisement, not a measurement — including the part where, on 10 of those 24 PNGs, a general-purpose codec still finds a small residual gain (up to 0.85%) that our current build does not chase. PDFs turned out not to belong in this floor: two real documents we tested measured 3.8x and 6.1x, since a PDF's own internal structure varies far more than an already-DCT-compressed image does. If most of your data is genuinely already-compressed pixels, we will tell you the gains are modest before you spend a day integrating anything.

04 · Questions we actually get

How does this compare to zstd or xz?

zstd and xz are excellent general-purpose compressors and we do not pretend otherwise. invariantity differs in one way we can state without disclosing the method: it looks at the structure in your data before choosing how to compress it, then still checks its choice against zstd, xz, bzip2, and brotli at their own maximum settings. Across 38 real files tested this way, it won 35 outright, tied 2, and lost 1 (a 0.76% gap on a 21 KB object file) — up to 2.20x tighter than the best single alternative on the best case. A full methodology will be published with the evaluation build so you can reproduce the comparison on your own data.

Is it open source?

Not today. The core is proprietary. We plan a public evaluation build so you can verify these numbers on your own data before committing to anything, which we think matters more than reading our source.

What happens with files that are already compressed?

On genuinely already-compressed binary media, such as JPEG and PNG, you get close to 1.0x, the floor in the table above (on 10 of 24 PNG reference images, a specialized codec still finds a small 0.04–0.85% residual gain our current build doesn't chase). PDFs are a partial exception, since they often carry their own compressible structure: two real PDFs we tested measured 3.8x and 6.1x. If your data is mostly already-compressed pixels rather than documents, the size gains alone probably do not justify a migration, and we will say so when you tell us what you store.

When is it available?

We are pre-launch. Private pilots come first, prioritized by data type, since the gains depend on what you store. Leave your details below and tell us what your data looks like; that is genuinely the fastest route in.

05 · Pilot access

Tell us what you store

We reply with what the measured numbers say about your data type, including when the answer is that the gains would be modest. No drip campaign follows.