Free, ad-free, no-subscription, no-account, no-cloud document scanner for Android. Your documents never leave your phone — and in the FOSS build, they provably can't.
Scanly exists because the document-scanner category is hostile to users: the popular apps (CamScanner, Adobe Scan, TurboScan, SwiftScan) gate work the phone already does locally behind subscriptions, stamp watermarks on exports, run ads, require accounts, and ship scans of your passport and medical records to someone else's servers.
Scanly is the alternative that should exist: everything runs on-device, nothing is gated, no ads, no account, no watermark — and the code is open (MIT) so anyone can fork it, ship it, or build on it.
- 100% on-device. The
fossbuild declares no INTERNET permission — enforced by CI on every commit, verifiable withaapton the APK. Scanning, OCR, and PDF generation all happen locally. Privacy is the architecture, not a setting. - No subscription. No ads. No watermark. No account. Ever. These are the table stakes the whole category violates.
- No cloud SDKs at all. There is deliberately no Google Drive or Dropbox integration. Export goes through the Android share sheet and the Storage Access Framework — which can write straight into Drive/Dropbox/Nextcloud via their system file providers, without Scanly ever holding a network permission or a token.
- Open source, permissive. MIT-licensed — free to use, fork, and redistribute.
- It won't disappear. No proprietary core dependency; the OpenCV + Tesseract + PdfBox pipeline is fully free software.
- Point-and-shoot capture with live auto edge detection and auto-capture
- Multi-page batch scanning that does not break when auto-capture is on
- Manual corner adjustment — draggable handles re-crop from the original capture
- Import from gallery via the system Photo Picker (no storage permission)
- Filters: Color, Greyscale, Black & White, Magic Color (shadow removal)
- Page rotate and reorder; append pages to any document later
- Offline OCR → searchable PDF (invisible text layer; English model bundled, works on first run with airplane mode on)
- Copy recognized text to the clipboard; per-page OCR status badges
- Full-text search across your library by scanned content
- Signature: draw once, then stamp onto any page (drag + resize, WYSIWYG)
- Password-protected PDF export (AES-128) — free here, paywalled elsewhere
- Export as PDF or per-page JPEGs via share sheet / Storage Access Framework
- Smart auto-naming (
2026-07-02_Scan_001), rename, no watermark on anything
- ID / passport mode (front + back composed onto one page)
- Folders and tags
- Additional OCR languages via user-supplied
.traineddata(SAF import — still no network) - Optional encryption at rest (passphrase / biometric)
- Annotation and markup
| foss build | gplay build | |
|---|---|---|
| INTERNET permission | none (CI-enforced) | only for optional ML Kit model fetch & one-time tip |
| Account required | never | never |
| Analytics / telemetry | none | none |
| Cloud SDKs | none | none |
| Where scans live | app-private storage on your device | same |
| How scans leave | only when you share or save them | same |
fossflavor: pure free software — OpenCV + Tesseract pipeline, zero proprietary dependencies, no Play Services. Intended for F-Droid.gplayflavor: same app; may optionally use Google's on-device ML Kit text recognition (still 100% on-device) plus an optional one-time "tip jar" (never a subscription, never a feature gate). All features are free in both flavors.
Requires JDK 17 and the Android SDK.
./gradlew assembleFossDebug # provably-offline build
./gradlew assembleGplayDebug
./gradlew testFossDebugUnitTest testGplayDebugUnitTest
CI (.github/workflows/ci.yml) runs the unit tests, assembles both flavors, and then
fails the build if the merged foss manifest contains the INTERNET permission — the
privacy claim is machine-checked, not marketing.
docs/SPEC.md— feature spec, grounded in documented user pain pointsdocs/BUILD_PLAN.md— tech stack, architecture, phased roadmap
MIT. See LICENSE.