PURE C
Android NativeActivity with no Kotlin or Java application code and no AndroidX.
OFFLINE BY DESIGN
TinyQR scans and decodes QR codes directly on your device — without accounts, cloud services, analytics, advertising, or network access.
$ tinyqr --architecture
TinyQR is an experiment in how small a useful Android app can be while keeping QR decoding on-device.
Android NativeActivity with no Kotlin or Java application code and no AndroidX.
Camera frames stay on the device and are decoded by the vendored quirc library.
TinyQR ships exclusively for 64-bit ARM Android devices, keeping the release focused on one modern ABI.
$ tinyqr --benchmark v1.1.0
TinyQR ships only for arm64-v8a Android devices. The latest measured APK, v1.1.0, is 67,506 bytes — below 100 KB (100,000 bytes).
| Version | Measurement date | arm64-v8a APK size | libtinyqr.so |
|---|---|---|---|
| v1.1.0 | 67,506 B / 65.92 KiB | 47,464 B / 46.35 KiB | |
| v1.0.0 | Not recorded | 70,652 B / 69.00 KiB | 50,848 B / 49.66 KiB |
The size claim refers to the APK file; installed storage usage and runtime memory are separate measurements. The v1.1.0 row measures the optimized signed tinyqr-small.apk; the v1.0.0 row retains the earlier unsigned release APK benchmark. Native library sizes are the uncompressed libtinyqr.so entries inside each APK. Google Play builds may differ because of signing, resources, icons, and later application changes.
$ tinyqr --privacy
QR codes are decoded locally on your device. TinyQR does not upload scanned images or QR contents, does not use analytics, and does not contain advertising.
No scanned content is sent to quirc or any external service.