A single-file desktop image optimizer for Windows and macOS. Drag images in, get smaller files out. No installer, no Node runtime, no companion folders.
Language: English UI
- Drag-and-drop — drop images onto the window or click to browse
- JPEG, PNG, WebP, AVIF — all four formats supported for both input and output
- Lossless-aware — skips encoding if the result would be larger than the original
- Undo — one-click restore; originals are moved to Trash, not deleted
- Optional companion output — export WebP or AVIF alongside the original format
- Portable — single executable, no installation required
Pre-built binaries are published in Releases. Single executable; double-click to launch.
| Platform | File |
|---|---|
| Windows x64 | Hando-win-x64-v*.exe |
| macOS Universal | Hando-mac-universal-v*.app.zip |
Hando is currently distributed without an Apple Developer ID signature, so on first launch macOS Gatekeeper will refuse to open it with: "Apple cannot verify that 'Hando' is free of malicious software..."
To allow it, run the following once in Terminal:
xattr -cr /path/to/Hando.appReplace /path/to/Hando.app with the actual location, e.g. ~/Downloads/Hando.app or /Applications/Hando.app. After this, double-click works as normal.
中文: 由於 Hando 目前未通過 Apple 公證,首次開啟會出現「Apple 無法驗證『Hando』是否為惡意軟體」警告。請在「終端機」執行
xattr -cr /Hando.app 的路徑(例如~/Downloads/Hando.app),之後即可正常使用。Apple Developer Program 收費 $99 美金/年。若你願意贊助以支援未來正式公證,請參考下方 Sponsor 區塊。
- Rust stable, ≥ 1.85.1
- Node.js 20+ (only for the desktop frontend dev server — not bundled into the app)
- Platform toolchain:
- Windows: Visual Studio 2022 Build Tools (Desktop development with C++) + NASM (
winget install nasm)- Important: Run
cargocommands from the "x64 Native Tools Command Prompt for VS 2022" shell, or first invokevcvarsall.bat x64. Otherwisemozjpeg-sysandwebp-syslinker steps will fail with cryptic errors.
- Important: Run
- macOS: Xcode Command Line Tools (
xcode-select --install) + NASM (brew install nasm)
- Windows: Visual Studio 2022 Build Tools (Desktop development with C++) + NASM (
npm install # frontend deps
npm run tauri dev # dev mode (Vite + Tauri)
npm run tauri build # release build
npm run dist # release build + rename + zipOutputs land in dist-final/.
See docs/superpowers/specs/2026-04-25-rust-native-encoder-design.md for the full design.
Briefly:
- WebView (TypeScript + Vite) for UI
- Tauri 2 (Rust) host
- In-process Rust encoders:
mozjpeg,oxipng,imagequant,webp,ravif - No sidecars, no native runtime dependencies
- Bump version in
src-tauri/Cargo.tomlandsrc-tauri/tauri.conf.json. - Commit and tag:
git tag v0.2.0 && git push origin v0.2.0. - GitHub Actions builds Windows + macOS-universal artifacts and creates a draft release.
- Edit the draft release notes, then publish.
Hando is open source and free. If it saved you time, a small tip helps cover Apple Developer Program fees ($99/year) so future builds can be properly signed and notarized — removing the macOS Gatekeeper warning for everyone.
Copyright (C) 2026 謝昇運 (homershie) homerxworkshop@gmail.com
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later) as published by the Free Software Foundation. See LICENSE for the full text.
AGPL's network clause means anyone who runs a modified version as a network service must also make their source available to users of that service. If that is incompatible with your use case, please open an issue to discuss commercial licensing.
- mozjpeg — IJG (BSD-style)
- oxipng — MIT
- imagequant — GPL-3.0 / commercial dual-licensed
- libwebp — BSD-3-Clause
- ravif / rav1e — BSD-2-Clause
- Tauri — MIT / Apache-2.0
- trash (Rust crate) — MIT
imagequant is GPL-3.0; combining it with our AGPL-3.0-or-later codebase is permitted because AGPL-3.0 is a strict superset of GPL-3.0's obligations. The other dependencies' permissive licenses are AGPL-compatible as downstream components.
