Free, Private & Browser-Based Image Studio
Compress, edit, resize, collage and design images directly in your browser — no uploads, no servers, no watermark.
Image Shuttle is a privacy-first image studio — compressor, photo editor, collage maker and design studio in one that processes everything entirely within your browser using the Canvas API and WebAssembly. Unlike traditional online image tools that upload your files to remote servers, Image Shuttle keeps your images on your device — making it safe for personal photos, confidential designs, and sensitive business assets.
- 100% Private: All processing happens client-side via Canvas API and WebAssembly. No file uploads to external servers.
- Four Formats: JPEG, PNG, WebP, and AVIF — compress within a format or convert between any of them.
- WebAssembly PNG Quantization: PNG compression uses
libimagequant-wasmfor 50-80% size reduction while preserving transparency. - Batch Processing: Compress dozens of images in parallel using Web Workers (auto-tuned to your CPU core count).
- Before/After Comparison: Real-time visual comparison slider to verify quality before downloading.
- Photo Editor: FotoJet-style adjustments, 12 filters, crop with aspect presets, and exact-pixel Resize (type 512 → export 512×512).
- Collage Maker: 20 programmatic grid layouts, adjustable spacing/radius/background, per-cell pan & zoom.
- Design Studio: layered canvas with templates, gradients, and FREE custom sizes (64–4096 px).
- Offline-Capable PWA: Install to your home screen and compress images without an internet connection.
- Bilingual UI: Native English and Chinese interfaces with full SEO localization.
- Framework: Next.js 16 (App Router) + React 19
- Language: TypeScript 5
- Styling: Tailwind CSS 4 + shadcn/ui primitives
- Image Processing:
- Canvas API
toBlob()for JPEG / WebP / AVIF @fe-daily/libimagequant-wasmfor PNG quantizationreact-compare-sliderfor before/after visualization
- Canvas API
- i18n: next-intl with URL-based routing (
localePrefix: "as-needed") - Theming: next-themes (System / Light / Dark)
- Toasts: Sonner
- Fonts: Geist + Geist Mono
- PWA: Custom Service Worker with offline precaching (including WASM modules)
- Deployment: Cloudflare Workers via OpenNext
- Node.js 18.17 or later
- npm, yarn, or pnpm
-
Clone the repository
git clone https://github.com/ShuttleLab/image-shuttle.git cd image-shuttle -
Install dependencies
npm install
The
postinstallscript automatically copies the libimagequant WASM binary intopublic/wasm/. -
Start the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000 to see the application running.
| Command | Description |
|---|---|
npm run dev |
Start the Next.js dev server |
npm run build |
Compile and type-check for production |
npm run lint |
Run ESLint |
npm run preview |
Build with OpenNext and run locally via Wrangler |
npm run deploy |
Build with OpenNext and deploy to Cloudflare Workers |
Image Shuttle is deployed on Cloudflare Workers using OpenNext.
npm run deployThe Service Worker (public/sw.js) precaches the application shell, all Layer 4 tool pages, both locales, and the libimagequant WASM module — enabling full offline operation after the first visit.
PNG quantization is provided by @fe-daily/libimagequant-wasm, a WebAssembly port of libimagequant.
Licensed under the GNU Affero General Public License v3.0 — see LICENSE.
Free to use, modify, and self-host. If you run a modified version as a network service, you must open-source your modifications (AGPL §13). For commercial licensing without copyleft obligations, contact support@shuttlelab.org.
Relicensed from MIT to AGPL-3.0 in June 2026 (sole copyright holder). Versions published before this change remain available under MIT per their original grant.