Website · Get it on Google Play · Docs · Privacy
Scanly is a free, open-source, offline-first document scanner for Android — scan paper, receipts, notes, and ID cards into clean PDFs on your phone with no account, no ads, no watermark, and no cloud upload. Built with Kotlin, Jetpack Compose, and Material 3.
It is designed for a practical, local-only scanning workflow:
- capture a document with the camera or import images from the gallery
- detect and correct page geometry
- refine pages with editing tools
- store and organize multi-page documents locally, including collections
- export as PDF or image sets
- Works fully offline — scanning, editing, storage, and export run on your device.
- No account or sign-up — open the app and start scanning.
- No ads, no watermark, and no subscription for core scanning.
- Documents stay on your device until you export or share them.
- Open source (AGPL-3.0-only) — the privacy claims are verifiable in the code.
- A privacy-first alternative to cloud scanners like CamScanner, Adobe Scan, and the retired Microsoft Lens (Microsoft retired Lens in early 2026).
- Google Play: Scanly on Google Play
- Website: www.usescanly.co.in
- offline-first by default
- document library with searchable collections (groups), paper-shaped cards, and a recent-item home dashboard
- manual camera capture with live document guidance, multi-model corner detection, and a physical-document semantic gate
- import images from the gallery to create or extend documents
- page editor with live cropped preview, full-screen filters/adjust, and a crop screen (AI Detect, rotate, handles)
- document filters (Magic Color, Natural, Vivid, Screen, Grayscale, B&W, Whiteboard, Faded Text, and Auto) with an adjustable intensity; paper presets use a paper-aware lighting model, and Screen and Vivid use global color looks
- in-app PDF reader (title, page n of m, paged or continuous, pinch-zoom) that hands its file to any offline PDF tool (merge, compress, password, watermark, sign, PDF to images)
- open PDFs from other apps with Open in Scanly (Files, mail, chat, cloud apps)
- on-device OCR and searchable page text, with editable text corrections and extracted-text reading
- sign PDFs or scanned pages with saved signatures, initials, dates, text, and checkboxes
- Pip, an optional pixel helper for empty screens, camera coaching, and a daily tip (all switchable in Settings)
- Advanced PDF export/share with password protection, page numbering, auto orientation, print sizes, margins, and group-level export
- direct export saving to
Downloads/Scanlyor a user-selected folder - settings with look & feel (including pure black AMOLED), configurable document detection models, storage usage, clear-all-data, Help & FAQ, and license info
Current version: 1.0.18 (version code 18) — see VERSION.md and CHANGELOG.md.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Kotlin
- Jetpack Compose + Material 3
- Hilt
- Navigation Compose
- CameraX
- Room
- DataStore
- LiteRT
- OpenCV
- Coroutines and Flow
app/– Android application source and module build filesdocs/– complete project documentation (start at docs/README.md)scanly-web/– separately versioned React website checkout that renders GitHub-backed marketing content and these docs — live at https://www.usescanly.co.ingradle/– wrapper and version catalog configuration
The repository is organized as a production-style single-module app:
:appis the only Android module- entry point:
app/src/main/java/in/c1ph3rj/scanly/MainActivity.kt - app wiring:
ScanlyApplication, navigation, Hilt modules, feature screens, and domain/data layers live underapp/src/main/java/in/c1ph3rj/scanly/ - local data: Room, DataStore, page-text search index, signatures, and app-private file storage
- camera and processing stack: CameraX, LiteRT, and OpenCV-based page processing
From the repository root on Windows:
./gradlew.bat assembleDebug
./gradlew.bat testDebugUnitTestInstall on a connected device or emulator (adb devices must show device):
./gradlew.bat installDebug
./gradlew.bat connectedDebugAndroidTestFull run, emulator, and test-suite instructions: docs/development/running-and-testing.md.
For an additional verification pass:
./gradlew.bat lintDebugFull documentation lives in docs/. Start at docs/README.md for complete project context.
| Document | Purpose |
|---|---|
| docs/README.md | Documentation index and reading paths |
| docs/overview/ | What Scanly is, features, user guide |
| docs/architecture/ | Layers, navigation, screens |
| docs/data/ | Room database, file storage, settings |
| docs/processing/ | Capture, ML, filters, export |
| docs/development/ | Setup, conventions, testing, releasing |
| docs/reference/ | Models, use cases, tech stack |
| VERSION.md | Release metadata and upgrade notes |
| CHANGELOG.md | User-facing release history |
| CONTRIBUTING.md | Contribution workflow |
| SECURITY.md | Vulnerability reporting |
| Agents.md | AI coding agent guidance |
| LICENSE | GNU AGPL-3.0-only |
- Website: https://www.usescanly.co.in
- Google Play: https://play.google.com/store/apps/details?id=in.c1ph3rj.scanly
- Docs: https://www.usescanly.co.in/docs
- llms.txt (AI-readable summary): https://www.usescanly.co.in/llms.txt
- Privacy policy: https://www.usescanly.co.in/privacy-policy
- Terms: https://www.usescanly.co.in/terms-and-conditions
- Source: https://github.com/c1ph3rj/Scanly
Scanly source code in this repository is licensed under AGPL-3.0-only.
Third-party dependencies and model assets can have their own license terms. Review
app/src/main/assets/settings/licenses.json and upstream sources before redistribution.
- offline-first by default
- preserve raw captures and avoid destructive edits
- keep manual controls available even when automation is imperfect
- prefer small, testable domain and data boundaries
Before sending changes, run the Gradle checks above and keep new code aligned with the existing package structure under in.c1ph3rj.scanly.
If you are planning a change that affects public behavior, update the relevant docs in docs/ and CHANGELOG.md before or alongside the code change.







