Squish - Batch Browser-based Image Compression
5/30/2025
Squish
Batch Browser-based Image Compression
A modern, browser-based image compression tool that leverages WebAssembly for high-performance image optimization. Squish supports multiple formats and provides an intuitive interface for compressing your images without compromising quality.
Features
- Support for multiple image formats:
- AVIF (AV1 Image Format)
- JPEG (using MozJPEG)
- JPEG XL
- PNG (using OxiPNG)
- WebP
- Key capabilities:
- Browser-based compression (no server uploads needed)
- Batch processing support
- Format conversion
- Quality adjustment per format
- Real-time preview
- Size reduction statistics
- Drag and drop interface
- Smart queue for compressing large number of files
Technology
Squish is built with modern web technologies:
- React + TypeScript for the UI
- Vite for blazing fast development
- WebAssembly for native-speed image processing
- Tailwind CSS for styling
- jSquash for image codec implementations
Getting Started
Prerequisites
- Node.js 18 or later
- npm 7 or later
Installation
- Clone the repository:
git clone https://github.com/addyosmani/squish.gitcd squish
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Build for production:
npm run build
Usage
- Drop or Select Images: Drag and drop images onto the upload area or click to select files
- Choose Output Format: Select your desired output format (AVIF, JPEG, JPEG XL, PNG, or WebP)
- Adjust Quality: Use the quality slider to balance between file size and image quality
- Download: Download individual images or use the “Download All” button for batch downloads
Default Quality Settings
- AVIF: 50%
- JPEG: 75%
- JPEG XL: 75%
- PNG: Lossless
- WebP: 75%
Acknowledgments
- jSquash for the WebAssembly image codecs
- MozJPEG for JPEG compression
- libavif for AVIF support
- libjxl for JPEG XL support
- Oxipng for PNG optimization
← Back to projects