Skip to content
c1ph3rjPublic

About

Scanly is an open-source Android document scanner that uses on-device AI to detect document edges and corners, delivering clean, precise scans — no internet or login required.

Topics

Resources

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Repository files navigation

Scanly

Website · Get it on Google Play · Docs · Privacy

Scanly intro screenshot

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:

  1. capture a document with the camera or import images from the gallery
  2. detect and correct page geometry
  3. refine pages with editing tools
  4. store and organize multi-page documents locally, including collections
  5. export as PDF or image sets

Why Scanly

  • 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).

Download

Highlights

  • 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/Scanly or 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.

Screenshots

Mobile

Scanly mobile screenshot 1 Scanly mobile screenshot 2 Scanly mobile screenshot 3
Scanly mobile screenshot 4 Scanly mobile screenshot 5 Scanly mobile screenshot 6
Scanly mobile screenshot 7

Tech Stack

  • Kotlin
  • Jetpack Compose + Material 3
  • Hilt
  • Navigation Compose
  • CameraX
  • Room
  • DataStore
  • LiteRT
  • OpenCV
  • Coroutines and Flow

Project Structure

  • app/ – Android application source and module build files
  • docs/ – 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.in
  • gradle/ – wrapper and version catalog configuration

Current Architecture

The repository is organized as a production-style single-module app:

  • :app is 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 under app/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

Build and Run

From the repository root on Windows:

./gradlew.bat assembleDebug
./gradlew.bat testDebugUnitTest

Install on a connected device or emulator (adb devices must show device):

./gradlew.bat installDebug
./gradlew.bat connectedDebugAndroidTest

Full run, emulator, and test-suite instructions: docs/development/running-and-testing.md.

For an additional verification pass:

./gradlew.bat lintDebug

Documentation

Full 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

Links

License

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.

Project Principles

  • 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

Contributing

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.

About

Scanly is an open-source Android document scanner that uses on-device AI to detect document edges and corners, delivering clean, precise scans — no internet or login required.

Topics

Resources

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages