4 stable releases
Uses new Rust 2024
| 1.5.0 | Sep 13, 2025 |
|---|---|
| 1.4.1 | Aug 31, 2025 |
| 1.3.0 | Aug 31, 2025 |
#438 in Images
180 downloads per month
86KB
1.5K
SLoC
Image Optimizer
A fast, parallel CLI tool for optimizing images (JPEG, PNG, WebP, SVG) written in Rust.
Features
- Multiple formats: Supports JPEG, PNG, WebP, and SVG optimization
- High-quality compression: Uses mozjpeg, oxipng (with zopfli compression by default), WebP encoders, and regex-based SVG optimization
- Parallel processing: Optimizes multiple images concurrently for speed
- Flexible output: In-place optimization or separate output directory
- Image resizing: Optional resizing with
--max-sizeparameter (applies to raster formats only) - Backup support: Create backup files before optimization
- Quality control: Adjustable quality (1-100) or lossless compression (applies to raster formats only)
- Progress tracking: Real-time progress bar with file-by-file status
Installation
From crates.io (Recommended)
cargo install image-optimizer
Quick Install (Linux/macOS)
curl -sSL https://raw.githubusercontent.com/nixuuu/image-optimizer/refs/heads/master/install.sh | bash
This script will:
- Detect your platform and architecture
- Download prebuilt binaries (if available) or build from source
- Install to
~/.local/binand configure your PATH
Manual Installation
System Dependencies
This tool requires system libraries for JPEG optimization:
Ubuntu/Debian:
sudo apt-get install libjpeg-dev
macOS:
brew install mozjpeg
Fedora/RHEL:
sudo dnf install libjpeg-turbo-devel
Build from Source
git clone https://github.com/nixuuu/image-optimizer.git
cd image-optimizer
cargo build --release
Usage
# Basic usage - optimize images in place
image-optimizer -i ./images -r
# Optimize to output directory with custom quality
image-optimizer -i input_dir -o output_dir --jpeg-quality 90
# Create backups and use lossless compression
image-optimizer -i images --backup --webp-lossless
# Optimize SVG files (removes metadata, comments, editor attributes)
image-optimizer -i icons/ -r
# Resize raster images to max 1920px on longer edge
image-optimizer -i photos --max-size 1920
# Use maximum PNG optimization level
image-optimizer -i images --png-optimization-level max
# Use PNG optimization without zopfli compression
image-optimizer -i images --no-zopfli
# Update to the latest version
image-optimizer --update
Options
-i, --input <PATH>- Input directory to scan for images-o, --output <PATH>- Output directory (optional, defaults to in-place)--backup- Create backup files (.bak extension)--webp-lossless- Use lossless compression for WebP--jpeg-quality <1-100>- JPEG quality (default: 85, applies to raster formats only)-r, --recursive- Recursively scan subdirectories--max-size <PIXELS>- Maximum size for longer edge (resizes if larger, applies to raster formats only)--png-optimization-level <0-6|max>- PNG optimization level (default: 2, max is alias for 6)--no-zopfli- Disable zopfli compression for PNG optimization--update- Update to the latest version from GitHub releases
Supported Formats
Raster Images
- JPEG (.jpg, .jpeg) - Optimized with mozjpeg for superior compression
- PNG (.png) - Optimized with oxipng (uses zopfli compression by default, can be disabled with --no-zopfli)
- WebP (.webp) - Optimized with Google's WebP encoder
Vector Graphics
- SVG (.svg) - Optimized with regex-based processing that safely removes:
- XML comments and unnecessary whitespace
- Editor metadata (Inkscape, Adobe Illustrator, Sodipodi attributes)
- RDF metadata blocks and temporary editing data
- While preserving all visual elements, animations, styles, and interactive features
Performance
The tool uses parallel processing to optimize multiple images simultaneously, making it efficient for batch operations on large image collections.
Dependencies
~30–47MB
~699K SLoC