- Java 100%
| app | ||
| fastlane/metadata/android/en-US | ||
| gradle | ||
| banner.png | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| image.jpeg | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Description:
Anonimage helps protect people's privacy by making it harder for automated systems to link or track photos through reverse image search, while keeping the image visually almost identical to the original. It introduces subtle, high-frequency perturbations—tiny texture, noise, and compression changes—that preserve the overall look and quality of the picture but disrupt the mathematical "fingerprints" that search engines and recognition algorithms rely on to find duplicates online. It also automatically censors detected faces and text, and removes all embedded EXIF metadata to further prevent identification and tracing through image files.
Features:
- No permissions required
- Reduces effectiveness of reverse image search
- Randomizes filename
- Removes EXIF metadata
- Censors any detected faces — choose between black box, custom mask or emoji overlay
- Emoji picker with 60+ emoji options for face censoring
- Automatically detects and censors text with a black box (optional, on by default)
- Written in Java
Threat model:
Anonimage is designed to protect against automated, passive image matching — the most common way photos are linked and tracked online.
Mitigated:
- Reverse image search (Google Images, TinEye, Yandex)
- Perceptual hash matching (pHash, dHash, SSIM-based deduplication)
- Content-based image retrieval (CBIR) via color/texture fingerprints
- CNN-based visual similarity (ResNet, ViT feature embeddings)
- EXIF metadata exposure (GPS, device model, timestamp)
- Face identification by automated systems
- OCR-based text extraction from images
Not mitigated:
- A human manually inspecting the image
- Forensic analysis by a sophisticated adversary with the original image
- Matching based on unique objects or scenes visible in the image
Anonimage is a privacy tool, not an anonymity guarantee. It raises the cost of automated tracking significantly but does not make images untraceable under all conditions.
How it works:
Each image passes through a pipeline of imperceptible perturbations — pixel shuffling, noise, HSV jitter, DCT coefficient modification, color histogram shifting, spatial micro-warping, adversarial border injection, and JPEG quantization jitter — that collectively break the fingerprints used by reverse image search, perceptual hashing, and CNN-based matchers. Faces and text are censored using ML Kit on-device detection.
All processing happens entirely on-device. No image data is sent to any server.
Installation:
Option 1:
Download the latest APK from the Releases Section.
Option 2:
Build it yourself using Android Studio.
Screenshot:
License
Distributed under the MIT License. See LICENSE for more information.