Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Join the chat at Build Status Build status

Packaging status

What is Precomp?

Precomp is a command line precompressor that can be used to further compress files that are already compressed. It improves compression on some file-/streamtypes - works on files and streams that are compressed with zLib or the Deflate compression method (like PDF, PNG, ZIP and many more), bZip2, GIF, JPG and MP3. Precomp tries to decompress the streams, and if they can be decompressed and "re-"compressed so that they are bit-to-bit-identical with the original stream, the decompressed stream can be used instead of the compressed one.

The result of Precomp is either a smaller, LZMA2 compressed file with extension .pcf (PCF = PreCompressedFile) or, when using -cn, a file containing decompressed data from the original file together with reconstruction data. In this case, the file is larger than the original file, but can be compressed with any compression algorithm stronger than Deflate to get better compression.

Since version 0.4.3, Precomp is available for Linux/*nix/macOS, too. The different versions are completely compatible, PCF files are exchangeable between Windows/Linux/*nix/macOS systems.

Usage example

Command Comment
(or download from here)
We want to compress this file (the Silesia compression corpus).
Size: 67,633,896 bytes (100,0%)
7z a -mx=9 silesia.7z Compressing with 7-Zip LZMA2, setting "Ultra".
Size: 67,405,052 bytes (99,7%)
precomp Compressing with Precomp results in silesia.pcf.
Size: 47,122,779 bytes (69,7%)
precomp -r -osilesia.zip_ silesia.pcf This restores the original file to a new file named silesia.zip_.
Without the -o parameter, Precomp would decompress to
diff -s silesia.zip_ Compares the original file to the result file, they're identical

How can I contribute?

  • You can have a look at the Issue list
  • You can build the project or download the binaries (see below), run it on your system and report bugs or make enhancement proposals.


Official GitHub releases for both Windows and Linux.

Alternative binary download of the latest official release for both Windows and Linux.

Binaries for older version can be found at this Google Drive folder.


Christian Schneider



To donate, you can either use the donate button here, the one at the top of the page ("Sponsor") or the one on my homepage. You can also send bitcoins to



Thanks for support, help and comments:

Legal stuff


Copyright 2006-2021 Christian Schneider

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.