Language: English | 简体中文 | 繁體中文 | 日本語 | 한국어
Demo: picforge.de
PicForge is a local-first browser app for batch image compression and resizing. It uses Canvas, Web Workers, and WebAssembly codecs to process images on your device. There are no accounts, uploads, or server-side image processing.
| Feature | Details |
|---|---|
| Local processing | Decode, resize, encode, preview, and export run in the browser. |
| Batch workflow | Add images by click, drag-and-drop, folder drop, or paste. |
| Compression formats | MozJPEG, WebP, OxiPNG, and AVIF via @jsquash/*. |
| Worker pipeline | Browser-side decode/resize with WASM encoding in a managed WorkerPool. |
| Per-image overrides | Global settings can be overridden by a complete snapshot on any image. |
| Preview modes | Slider, side-by-side, and single-image comparison with zoom and pan. |
| Export tracking | Single download or ZIP export with picforge-manifest.json. |
| PWA ready | Installable app shell with offline cache and foreground update prompt. |
| Internationalized | English, Simplified Chinese, Traditional Chinese, Japanese, and Korean. |
Requirements:
- Node.js 18 or newer
- pnpm 8 or newer
git clone https://github.com/DejavuMoe/PicForge.git
cd PicForge
pnpm install
pnpm devOpen http://127.0.0.1:5173.
Production build:
pnpm build
pnpm previewUser files
-> fileStore queue
-> effective settings: global or per-image snapshot
-> decode and optional resize with browser Canvas APIs
-> WorkerPool encodes pixels with @jsquash WASM codecs
-> preview URLs, size stats, manifest metadata, and export actions
The UI is a native React app shell with dense workspace controls: header, toolbar, file list, preview, single-image settings, and status bar. Preview overlays are separated from the image transform layer so labels and metadata do not scale during zoom.
| Command | Action |
|---|---|
pnpm dev |
Start the app dev server on 127.0.0.1. |
pnpm build |
Build the production app. |
pnpm preview |
Preview the production build. |
pnpm lint |
Run ESLint. |
pnpm test |
Run Vitest. |
pnpm typecheck |
Type-check app, worker, and codecs packages. |
| Document | Purpose |
|---|---|
| Architecture | Runtime architecture and data flow. |
| QA checklist | Manual regression and release checks. |
| i18n guide | Translation and language support notes. |
| Changelog | Version history. |
| Contributing | Development and pull request guidance. |
| Security | Vulnerability reporting and privacy model. |
PicForge reads selected files locally and uses generated object URLs for preview and export. Object URLs are revoked when files or results are removed. If you deploy the app yourself, keep analytics, upload flows, and remote processing out of the default path unless users explicitly opt in.