Privacy Friendly QR Scanner: decoding codes without sending them anywhere
Privacy Friendly QR Code Scanner for Android
At a glance
- What is it?
- This is a Privacy Friendly App from SECUSO that scans QR codes and barcodes using only the device camera, and its selling point is that nothing about a scan leaves the phone. It suits users who want a scanner without the network behaviour of a commercial one, and the app depends on the ZXing project for decoding.
- Who is it for?
- Adopt Privacy Friendly QR Scanner if you want a scanner that decodes on the device and asks nothing of the network, since the camera is the only permission the app describes using and the code is available under F-Droid and as source.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 147 days ago.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What the app is for: checking a link before you open it
The Privacy Friendly QR Scanner belongs to the group of Privacy Friendly Apps, and the README states its purpose plainly. The app supports its users in detecting malicious links, because QR codes provide new possibilities for an attacker, since they can contain links to phishing webpages or to webpages from which malware would automatically be downloaded. The point of scanning one carefully is to check the link before accessing the corresponding webpage.
That framing is worth pausing on, because it explains why the app is a scanner and not a browser. A QR code is a redirect mechanism that bypasses the visibility a typed URL gives you, and the whole value of decoding one is seeing the destination before you commit to it.
The privacy claim is the second half. The app is optimized regarding the user's privacy, and it only uses the device's camera in order to decode QR codes and barcodes. No server, no account, no lookup service. For a QR scanner that is an unusually clean position, since a scanner that resolves short links or looks up products is by definition talking to somebody.
The project is GPLv3 licensed, written in Java, and it is one of a family of apps from SECUSO with a project page at secuso.org/pfa. The repository is not archived, and the last push was on 2026-05-29, with the most recent release tags being v4.6.19 from 2026-02-09, v4.6.18 from 2025-10-15 and v4.6.17 from 2025-08-02.
Decoding rests on ZXing, not on code in this repository
The README names the decoding library it relies on. This app uses the help of the ZXing Projekt, linking to the zxing repository on GitHub.
That is a design decision with consequences worth spelling out, because it is the main structural fact about this codebase. The scanning logic is not written here. The hard part of a barcode scanner, the part that has to find a symbol in a noisy camera image, decode it, handle the several dozen symbologies, and cope with damaged or partially obscured codes, is ZXing's work, and this repository is the Android application around it.
The repository layout is consistent with that. The top level contains `app/`, the application module, `libs/`, which is where the ZXing dependency is vendored as a git submodule, and the `.gitmodules` file that declares it. There is `fastlane/` for the store metadata, `build.gradle` and `settings.gradle` for the Gradle build, `gradle.properties`, the `gradlew` and `gradlew.bat` wrapper scripts, `CHANGELOG.md`, `CONTRIBUTING.md` and the `LICENSE` file.
The `libs/` directory and the submodule are the part of the setup that matters for anyone who wants to build this. A vendored dependency means the build is reproducible, since the exact ZXing revision is pinned in the submodule rather than resolved at build time, and it means the tree is self-contained for the scanning logic. The cost is that updating the decoder means updating a submodule pointer rather than bumping a version in a manifest, which is a manual step that has to be remembered.
The API reference section gives the version targets: minimum SDK 17 and target SDK 34.
Building it: Android Studio and the Gradle project
The build section is short. Further development requires Android Studio, and the recommendation is to use the latest version.
That is the whole instruction, and it reflects a project where the build system is a normal Android Studio project rather than something with a scripted release pipeline. The `gradlew` wrapper in the tree means you can also build from a command line with a local JDK and the Android SDK installed, but the README does not describe a command line workflow, and for an app that has to produce a signed release artefact the IDE remains the practical route.
The `fastlane/` directory is present in the repository, and the README's icon links point at images under `fastlane/metadata/android/en-US/images/icon.png`, which tells you the fastlane setup is the source of the store listing metadata rather than a leftover.
The app itself is also distributed through F-Droid, and the README carries a Get it on F-Droid badge pointing at the package `com.secuso.privacyFriendlyCodeScanner`. That distribution route is worth noting, because F-Droid builds from source and audits what it ships, which is a meaningful difference from a build you download as an artefact. The application id, `com.secuso.privacyFriendlyCodeScanner`, is also the identifier you would use in an F-Droid or MDM deployment.
For a first run, the useful next step is the F-Droid listing rather than a build, since it gives you the released version without needing the Android SDK, and the source is there if you want to check what it does.
Backup, migration and the Weblate translation path
Two supporting features are documented that matter for anyone deploying this on real devices.
The first is data backup. You can use the Privacy Friendly Backup app to backup and restore this application's data, and the README says this can also be used to migrate your data to a new phone. Since the scanner's value depends on what it remembers, and since the app stores its scan history locally, that link to a separate backup tool is a deliberate separation of concerns: the backup utility is its own project with its own release cycle.
The second is translation. If you want to help translate the app, you can use Weblate, with the project page hosted at hosted.weblate.org under the pfa organisation, and the README embeds the translation status widget. The badge in the header links to the same project.
The Weblate arrangement is standard for the Privacy Friendly Apps family, and it has a practical consequence for a maintainer or a translator: the translations are not in the git repository, so a fork inherits the source but not the translated strings, and the translation files are pulled from Weblate during the release build. Anyone planning to fork this app for a regional language needs to account for that.
The project also has a social presence, with badges for Bluesky and Mastodon pointing at SECUSO Research accounts, and those are where the project communicates outside the repository.
Where Privacy Friendly QR Scanner is the wrong tool
The first wrong-tool case is a scanner that does more than decode. Many commercial scanners add product price lookups, restaurant menu parsing, contact card actions and analytics about what you scan. This app deliberately does not, and the README's privacy claim is only true because there is no network component. A user who wants a scanner that also recognises what the code points at is looking for a different product.
The second is a build environment stuck in the past. The API reference names a minimum SDK of 17 and a target SDK of 34, and the README says further development requires Android Studio with the latest version. The `gradle/`, `build.gradle` and `settings.gradle` files are a Gradle layout that a current Android Studio will open, but a project that has not been rebuilt in a while against current platform expectations is exactly the kind of thing that stops opening cleanly, and the README does not document a working toolchain version.
The third is an enterprise deployment that needs an internal build with your own signing and your own package name. There is nothing in the repository about release signing, and the `fastlane/` directory holds metadata rather than a documented release pipeline, so a company producing its own builds is doing that work from scratch.
The alternative worth naming is the camera in your phone's own app, or a general barcode library used inside your own product. The difference in approach is that a standalone scanner app is a whole application with its own storage, its own history and its own update path, whereas embedding ZXing directly in your own application gives you the same decoding without a second app on the device and without a separate data store to migrate. For a household user who just wants to scan a code, the app is the cheaper answer, because writing your own scanner is not a weekend project.
Licensing details, maintenance state and what to check first
The licence section is more granular than most, and the extra detail is about assets rather than code.
The application code is licensed under the GPLv3, with copyright 2015 to 2017 for Philipp Rack and 2018 to 2022 for Christopher Beckmann, and the standard GPL notice text is reproduced. The icons used in the navigation drawer are licensed under CC BY 2.5. In addition the app also uses Google icon artwork under the Apache License 2.0. All other images, meaning the Privacy Friendly Apps logo, the SECUSO logo and the app logo, are copyright SECUSO for 2016 to 2020.
So this is a GPLv3 application with a mixed asset set, and the two licences involved in the assets are incompatible with each other in the sense that a CC BY 2.5 icon and an Apache 2.0 icon can sit in the same binary but the combination is not something you can relicense as a whole. For an organisation auditing the app for a managed deployment, that is the line to read, not the headline GPL notice.
On maintenance, the picture is steady rather than fast. The last push was on 2026-05-29, and the three most recent release tags are v4.6.19 from 2026-02-09, v4.6.18 from 2025-10-15 and v4.6.17 from 2025-08-02. Patch-level releases across a year is a normal rhythm for a stable utility app, and the project is not archived.
The contributors are credited in the README, with the app icon attributed to Markus Hau and Tatjana Albrandt.
The first thing to check before deploying is the F-Droid listing, since that is where the version you will actually install is recorded, and the second is the licence split on the assets, since the GPLv3 code and the CC BY 2.5 drawer icons travel under different terms.
Editorial conclusion
Adopt Privacy Friendly QR Scanner if you want a scanner that decodes on the device and asks nothing of the network, since the camera is the only permission the app describes using and the code is available under F-Droid and as source. Do not adopt it if you need the extras that commercial scanners add, such as product price lookups, or if your organisation requires a code base you can build with a current toolchain, because further development is documented as needing Android Studio and the API reference still names a minimum SDK of 17. Before you install, check the F-Droid listing for the version you will actually get, since the recent release tags are v4.6.x, and read the licence section, because the app code is GPLv3 while the navigation drawer icons are CC BY 2.5 and other images carry their own terms.
Frequently asked questions
What does the Privacy Friendly QR Scanner app do with scanned data?
The README states that the app only uses the device's camera in order to decode QR codes and barcodes, and that it is optimized regarding the user's privacy. There is no account and no server component described, and the app's stated purpose is to help users check a link before opening the corresponding webpage.
How do I install the Privacy Friendly QR Scanner?
The app is listed on F-Droid under the package `com.secuso.privacyFriendlyCodeScanner`, and the README carries a Get it on F-Droid badge. Building from source requires Android Studio, with the latest version recommended, and the repository contains the Gradle project, the `gradlew` wrapper and the `fastlane/` store metadata.
What library does the Privacy Friendly QR Scanner use to decode codes?
The README says the app uses the help of the ZXing Projekt. The library is vendored in the `libs/` directory of the repository as a git submodule, with the `.gitmodules` file declaring it, and the API reference gives a minimum SDK of 17 and a target SDK of 34.
How do I back up or transfer the Privacy Friendly QR Scanner data?
The README says you can use the Privacy Friendly Backup app to backup and restore this application's data, and that this can also be used to migrate your data to a new phone. Translations are handled separately through Weblate.
What licence applies to the Privacy Friendly QR Scanner?
The application code is licensed under the GPLv3, with copyright held by Philipp Rack for 2015 to 2017 and Christopher Beckmann for 2018 to 2022. The navigation drawer icons are CC BY 2.5, icons from the Google design icon set are Apache 2.0, and the Privacy Friendly Apps, SECUSO and app logos are copyright SECUSO.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/secuso-privacy-friendly-qr-scanner)Was this useful?