# LibreSudoku: an offline sudoku app built on Jetpack Compose

> LibreSudoku is a Kotlin and Jetpack Compose sudoku app for Android that plays 6x6, 9x9 and 12x12 boards with four difficulty levels, generates its own puzzles and never requests internet access. It is distributed through F-Droid and app stores under GPL-3.0, with translations run through Weblate.

**kaajjo/LibreSudoku** — LibreSudoku - Sudoku app for android built with Kotlin + Jetpack Compose + Material3

- Repository: https://github.com/kaajjo/LibreSudoku
- Stars: 741 · Forks: 64
- Language: Kotlin
- License: GPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/kaajjo-libresudoku

## An app that never touches the network

LibreSudoku is described as an open source sudoku application designed to be as user friendly and customizable as possible, built with Jetpack Compose and Material3. The project description calls it a sudoku app for Android built with Kotlin, Jetpack Compose and Material3.

The defining constraint is stated in the updates section and it is a strong one. The app does not check for updates, does not download APKs and does not request internet access. Updates are installed through your app store or by downloading a new release from GitHub. There is no background service, no telemetry and no permission to hold, which is a design decision rather than a missing feature, and it is why the app can sit in a store aimed at privacy conscious users without caveats.

For an evaluation, that constraint also tells you what to look for next. Because there is no network layer, there is no account, no server side puzzle validation and no online leaderboard. Everything the app does, it does locally, which is the point, but it also means the feature ceiling is set by what fits on the device.

## Three board sizes and a generator with DLX uniqueness checks

The board formats are wider than the usual single 9x9. The feature list names 6x6, 9x9 and 12x12 sudoku boards with four difficulty levels, which covers the two smaller formats that are common in print puzzle books as well as the standard grid, and the larger one that turns a long session into a longer one.

Puzzle generation is the part with real engineering behind it. The README says the classic generator uses DLX uniqueness checks and a versioned logical rating policy. The dancing links algorithm is the standard way to test whether a grid has a single solution, so the uniqueness guarantee is structural rather than a matter of sampling until a puzzle looks hard. The versioned rating policy matters just as much for a player, because it means the difficulty label attached to a puzzle is defined by a rule set that can change over time instead of by whoever generated it.

The generator is not written from scratch. The credits list a modified version of QQWing as the sudoku puzzle generator and solver, which is a puzzle generator and solver credited in the project, along with references to Tachiyomi, Seal, Open Sudoku and Privacy Friendly Sudoku.

The rating policy being versioned is a subtle but useful detail. It means two puzzles with the same difficulty label are rated by the same rules, and it means the app can keep old puzzles meaningful when the rating rules improve.

## Saves, per mode statistics and a game history

The persistence and reporting features are what separate a sudoku app from a puzzle toy. The feature list describes advanced statistics and game history with a previous games list, best and average times for each mode, a win streak and a percentage.

Per mode breakdown is the useful part. Because three board sizes and four difficulty levels produce twelve distinct modes, a single global average tells you nothing, whereas a best and average time per mode tells you where you are actually improving. The win streak and the percentage add the retention layer that keeps a daily player coming back, and the previous games list is what lets you look back at a specific puzzle you were working on.

Saves are handled in the same spirit. The app lets you continue any unfinished game and start a new one whenever you want, so a saved position is not a commitment that blocks a new puzzle. Nothing in the documentation describes a cloud backup for that state, which follows from the no internet rule, so the practical implication is that a device migration means starting a save again unless the store's own backup mechanism carries the data.

Tutorials are also listed, covering playing techniques, and a future plan entry mentions a complete set of technique tutorials along with a better hint system that would explain the next move instead of just revealing the value.

## Creating your own puzzles and importing custom files

Two of the less common features are the ones that make this more than a game: create your own sudoku puzzles, and import custom sudoku files. Together they turn the app into a viewer for puzzles from other sources, including ones designed for a specific test or with an unusual starting configuration.

The planned roadmap adds to that direction. A future plan entry covers custom sudoku from a gallery or camera picture, which would let a photograph of a printed puzzle become a game. Another plan is a better hint system, where the app explains the next move rather than simply revealing the value, and a third is more customization options, described in the README as letting you customize anything that can be customized.

Customization is called out separately in the project description as one of the two goals, alongside user friendliness, and the feature list simply says countless customization options. The repository layout backs that up, because there is a dedicated Color-Picker directory at the top level alongside the app module, which is where a colour picker component would live.

The import path is also where the offline design pays off, since a file you import needs no account and no upload.

## Getting it from F-Droid, app stores or a GitHub release

Distribution is broad for a small project. The README carries badges for F-Droid, with the package identifier com.kaajjo.libresudoku, an openapk listing, an androidfreeware download page and a rustore catalogue entry, plus a GitHub latest release badge pointing at the Libre-Sudoku releases page and a download count badge for all releases and assets.

The F-Droid route is the one to understand properly. F-Droid builds from the source in the repository rather than shipping a prebuilt binary, so the F-Droid build is the closest thing to what the repository actually contains, while the store listings may lag behind or be built from a tagged release. The GitHub releases page gives you a signed artefact of a specific version, and the README is explicit that you should install updates through your app store or download a new release from GitHub rather than relying on the app to self update.

The recent release history is v2.0.2 on 2025-03-05, v2.0.1 on 2025-01-02 and v2.0.0 on 2024-12-11. Those three tags cluster in a single quarter of 2024 and 2025, while the last push to the repository was on 2026-10-14. So the stores and the repository head are not the same thing right now, and a user who wants the newest code has to build from source rather than download a release.

## A Compose codebase, Weblate translations and a GPL-3.0 licence

The engineering picture is a modern Android project. The repository holds an app module, a Color-Picker module, a fastlane directory that contains the store metadata and the phone screenshots shown in the README, build.gradle.kts, settings.gradle.kts, gradle.properties and the Gradle wrapper with gradlew and gradlew.bat, plus a .github directory and a .gitignore. Kotlin is the language, Compose is the UI toolkit and Material3 is the design system, and the build is driven by Gradle Kotlin scripts rather than the older Groovy ones.

Translation is handled on Weblate rather than in pull requests, and the README links to the hosted Weblate project with a translation status badge, inviting contributors to translate the app into their own language. That is a sensible arrangement for a translation heavy app, and it also means the string resources live outside the main contributor flow.

The licence is GPL-3.0, with the licence file at the root and a badge in the README. For an end user that is simply the reason the source is available. For anyone considering the code as a base for something else, GPL-3.0 is a strong copyleft with the usual obligations if you distribute a modified version, and the Material3 interface also means the result will look like an Android app rather than like whatever you had in mind.

Nothing in the repository suggests a server side component, and the absence of a homepage is consistent with a project whose distribution channel is the app stores rather than a documentation site.

## Conclusion

Adopt LibreSudoku if you want a sudoku app that runs entirely offline, generates its own puzzles, imports custom files and asks for no network permission, and you are comfortable with the Material3 look it imposes. Do not adopt it if you want online features such as leaderboards, cloud sync or in app puzzle sharing, because the app does not check for updates, download APKs or request internet access at all. Verify first that the puzzle generator satisfies you on the size and difficulty you care about, since the app relies on DLX uniqueness checks with a versioned logical rating policy, and check the F-Droid build and the GitHub release page side by side, because the newest tagged release is v2.0.2 from 2025-03-05 while the last commit was on 2026-10-14.

## FAQ

### What board sizes and difficulties does LibreSudoku support?

The feature list names 6x6, 9x9 and 12x12 sudoku boards with four difficulty levels. The classic generator uses DLX uniqueness checks and a versioned logical rating policy to produce and rate puzzles.

### Does LibreSudoku need internet access?

No. The README states that the app does not check for updates, download APKs or request internet access, and that updates are installed through the app store or by downloading a new release from GitHub.

### How do I install LibreSudoku?

The README links to F-Droid with the package identifier com.kaajjo.libresudoku, and also to openapk, androidfreeware and rustore listings, plus the GitHub releases page for a direct download. F-Droid builds the app from the repository source.

### Can LibreSudoku import puzzles and track my history?

Yes. The feature list covers creating your own sudoku puzzles, importing custom sudoku files, saving unfinished games, and advanced statistics with a previous games list, best and average times for each mode, a win streak and a percentage.

## Sources

- [Issues](https://github.com/kaajjo/LibreSudoku/issues)
- [kaajjo/LibreSudoku on GitHub](https://github.com/kaajjo/LibreSudoku)
- [License: GPL-3.0](https://github.com/kaajjo/LibreSudoku/blob/main/LICENSE)
- [README](https://github.com/kaajjo/LibreSudoku/blob/main/README.md)
- [Releases](https://github.com/kaajjo/LibreSudoku/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/kaajjo-libresudoku
