// the take
ImageToolbox is an Android image/PDF editing app built with Kotlin and Jetpack Compose that bundles an enormous number of tools — filters, format conversion, OCR, background removal, drawing, PDF manipulation, barcode scanning, color utilities — into one app. It's aimed at power users who want a single FOSS-friendly alternative to a dozen separate single-purpose image apps.
The FOSS build genuinely strips out Google deps, analytics and crashlytics (table in the README spells out the FOSS-vs-Market split), so it's one of the few full-featured image apps you can install from F-Droid without telemetry. It covers real gaps in Android's native codec support — AVIF, JXL, HEIF/HEIC, QOI conversion — that most editors don't bother with. Background removal and upscaling aren't a single bolted-on gimmick; it offers a real choice of backends (U2Net, RMBG, BiRefNet, ISNet, MobileSAM for point-based selection), which matters because quality varies a lot by model and image type. It's actively maintained with a steady release cadence and a live Telegram community for support/betas.
The feature surface is so wide (500+ filters, 170+ textures, dozens of downloadable AI models) that quality and maintenance are almost certainly uneven across it — a filter chain tool and a dedicated AI upscaler are very different engineering efforts, and they're presented as equally supported. Several AI features require downloading models at runtime (background removal, inpainting, depth, OCR engines), which means first-use network dependency, extra storage, and failure modes that are easy to hit on spotty connections or low-storage devices. It's effectively a single-maintainer project (T8RIN) carrying this much surface area — if that person's bandwidth drops, there's no obvious depth of co-maintainers to catch regressions across hundreds of code paths. It's Android-only (API 24+), so there's no path to reuse this on desktop or iOS if that's part of what you need.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →