Binary compression for Mach-O, ELF, and PE executables.
| Platform | Binary Format | Compression | Library |
|---|---|---|---|
| macOS | Mach-O | LZFSE | Apple Compression Framework |
| Linux | ELF | LZFSE | Open-source lzfse library |
| Windows | PE | LZFSE | Open-source lzfse library |
pnpm run buildOutputs to build/prod/out/Final/binpress (or binpress.exe on Windows).
- macOS: Xcode Command Line Tools (provides clang and Compression framework)
- Linux: GCC (lzfse library is built automatically from submodule)
- Windows: MinGW or Visual Studio (lzfse library is built automatically from submodule)
After building, make binpress available system-wide:
# Option 1: Copy to /usr/local/bin
sudo cp build/prod/out/Final/binpress /usr/local/bin/
# Option 2: Add to PATH (add to ~/.zshrc or ~/.bashrc)
export PATH="$PATH:$(pwd)/build/prod/out/Final"Windows Installation
# Copy to a directory in your PATH
copy build\prod\out\Final\binpress.exe C:\Windows\System32\
# Or add to PATH
$env:PATH += ";$(Get-Location)\build\prod\out\Final"binpress --help
# Or test with compression
binpress input.bin -o output.binbinpress - Create self-extracting binaries and compressed data files
Usage:
binpress <input> -o <output> # Create self-extracting stub
binpress <input> -d <output> # Create compressed data file
binpress <input> -o <stub> -d <data> # Create both outputs
binpress --help
binpress --version
Arguments:
input Path to binary to compress
Options:
-o, --output PATH Output self-extracting stub
-d, --data PATH Output compressed data file
--target TARGET Target platform-arch-libc (e.g., linux-x64-musl, darwin-arm64, win32-x64)
--target-platform PLATFORM Target platform (linux, darwin, win32)
--target-arch ARCH Target architecture (x64, arm64)
--target-libc VARIANT Target libc (musl, glibc) - Linux only
-h, --help Show this help message
-v, --version Show version information
Examples:
binpress node -o node-compressed # Self-extracting binary
binpress node -d node.data # Compressed data file
binpress node -o node-compressed -d node.data # Both outputs
Note: At least one output (-o or -d) must be specified.
Compressed stubs are automatically detected and repacked when recompressed.
Used by node-smol-builder to create compressed Node.js binaries that are 50-70% smaller than uncompressed builds.
MIT