Compress images, edit PDFs, remove backgrounds, decode JWTs, scan QR codes, and 180+ more — with nothing ever uploaded. Every tool runs 100% client-side with WebAssembly, Canvas, and on-device AI, so your files never leave your device.
🚀 Open goodwebtools.com · 🖥️ Desktop app · 🤖 Ask Agent
![]() |
![]() |
![]() |
| Desktop | Mobile | Mobile category menu |
⭐ If GoodWebTools is useful, star the repo — it helps other people find privacy-first tools.
Most "online tools" quietly upload your files to a server. GoodWebTools does all the work in your browser — with WebAssembly, Canvas, the File System Access API, and on-device machine-learning models — so:
- 🔒 Nothing is uploaded. Your images, PDFs, videos, and text stay on your device.
- ⚡ No sign-up, no limits, no watermarks. Just open a tool and use it.
- 📶 Works offline. It's an installable PWA — cache it once, use it on a plane.
- 🖥️ Native desktop app (Windows / macOS / Linux) built with Tauri, for tools that want the filesystem.
- 🤖 Built-in AI agent that drives the tools for you — fully on-device, or with your own API key.
193 tools across 13 categories. Here's a taste — browse them all at goodwebtools.com.
Tell it what you want in plain language — "compress this image to 100 KB", "merge these PDFs", "remove duplicate rows from this CSV and convert to Excel" — and it picks the right tools, chains them, and hands back the result. It runs a small model fully on-device (WebGPU), or you can plug in your own OpenAI-compatible / Anthropic API key. Either way, the processing stays in your browser.
- Astro static site + React islands (each tool is its own lazy-loaded chunk)
- 100% client-side processing: WebAssembly, Canvas,
onnxruntime-web,@imgly/background-removal,mupdf,ffmpeg.wasm,transformers.js/ WebGPU - Installable PWA with offline support
- Native desktop app via Tauri 2
- Deployed on Cloudflare Workers (static assets + R2 for on-demand ML models)
npm install --legacy-peer-deps
npm run dev # http://localhost:4321Build a production bundle with npm run build, run tests with npx vitest run.
PRs are very welcome — new tools, fixes, and translations. Every tool is a thin React island (src/islands/<category>/) over a pure, unit-tested library (src/tools/<category>/*.lib.ts), registered in src/registry/tools.ts. The golden rule: keep everything client-side — if a feature would need a server, it doesn't fit GoodWebTools.
- Fork & branch (
feat/<your-tool>) - Add your
*.lib.ts(with tests) + a thin island, register it intools.ts, add SEO copy intool-seo.ts npx vitest run && npm run lint && npm run build- Open a PR
See CONTRIBUTING.md and DEPLOYMENT.md for the full workflow and self-hosting guide.
MIT — free to use, self-host, and build on.







