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)
Quick Install (Linux/macOS)
|
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:
macOS:
Fedora/RHEL:
Build from Source
Usage
# Basic usage - optimize images in place
# Optimize to output directory with custom quality
# Create backups and use lossless compression
# Optimize SVG files (removes metadata, comments, editor attributes)
# Resize raster images to max 1920px on longer edge
# Use maximum PNG optimization level
# Use PNG optimization without zopfli compression
# Update to the latest version
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.