ZuckOff for Android, last updated 8 November 2026
ZuckOff has no account system and no analytics. Nothing the app records is transmitted anywhere on its own. There are two exceptions. A hardware report goes out only when you compose one and tap Send. Reports from people nearby carry your location rounded to about 100 m, and only when you send one or turn their alerts on.
ZuckOff scans for Bluetooth Low Energy advertisements, the broadcasts nearby devices send out on their own. For each device it hears, it stores locally on your phone:
This is the same information any Bluetooth scanner sees. Unlike iOS, Android hands apps the address carried in the advertisement itself, so that is what ZuckOff stores. Most modern devices rotate a random address rather than broadcasting a permanent hardware one, which is why the same pair of glasses can appear in the log more than once. The app makes no attempt to link those rows back to a person, and it holds nothing that identifies the owner of any device.
In the app's own private storage on your phone: a local database for the device log and a preferences file for your settings and subscription state. For reports from people nearby the preferences also hold a random install ID, the last location fix the app took, and the reports it fetched. No other app can read either. Uninstalling ZuckOff deletes all of it, and you can clear the log at any time from Settings.
ZuckOff asks for no access to contacts, photos, the microphone or the camera, and has no advertising identifier, tracking or third-party analytics SDKs. The two Google libraries it does use, Firebase Cloud Messaging and Google Play services location, serve only reports from people nearby and are described below.
Only if you choose to send it. The CSV export in Settings produces the log as a file and hands it to Android's share sheet, and where it goes from there is entirely your decision. A hardware report reaches the ZuckOff server only when you tap Send. Reports from people nearby are the one feature that uses your location, and they are described below.
ZuckOff can flag glasses it recognises, but new hardware only gets added to that list once someone has captured a real advertisement from a pair. The report sheet lets you send one from inside the app: it shows you the exact payload before anything leaves, and nothing is sent until you tap Send.
A report can include what the device broadcasts: its advertised name, its manufacturer company ID, the full advertisement payload, any service UUIDs it broadcasts, and signal strength and transmit power. It can also include what the app already thinks the device is and why, the version of ZuckOff and of its detection list, and how you say you know what the device is. Two fields you type yourself go with it, a label of up to 80 characters and a note of up to 500. It never includes the Bluetooth address the device broadcasts, your location, an account, an advertising identifier, or a date or time of its own. The server records when the report arrived. A report cannot be linked to you, and for that reason it cannot be withdrawn once sent.
Reports are stored so they can be reviewed and turned into new detection rules. To limit how many reports one source can send in an hour, the server keeps a salted hash of the network address a report arrives from, shortened to eight bytes. The address itself is never written down. The hash is never joined to the report it came with, and it is deleted once the hour has passed.
The free text a report can carry, meaning your note, the label you typed and the name the device broadcast, is removed 30 days after the report has been dealt with, and in every case 180 days after it arrives. The advertisement bytes are kept, because those are what a detection rule is written from and they identify nobody. Please leave other people's names out of the note.
Tapping Report camera glasses takes one location fix and rounds it to about 100 m. That point goes to the ZuckOff server with the app version, the platform and a random install ID the app made up once. If your scanner flagged camera glasses in the last 10 minutes, the report also names what it heard and carries the same 16 digit fingerprint a hardware report would; otherwise it is marked as something you saw. The sheet shows all of it before you tap Send. Phones within 500 m see the report for 30 minutes and can answer I saw them or Not seen, and those answers go to the server the same way. Pro users may choose 250 m or 1 km instead, and Tell people nearby on a detection alert sends the same fields at once. With Pro, a phone that hears the same kind of hardware when it arrives near a report answers I saw them on its own, with the same fingerprint.
The server never stores the install ID itself, only a salted hash of it, which it uses to count one answer per phone, to keep a reporter from answering their own report, and to limit how often one phone can post. The server also notes when it first and last heard from each hashed install ID. For an install's first hour, its reports are shown but not pushed to anyone until a phone the server has known for longer answers I saw them, and its answers are not counted. That note is deleted once the install has been silent for 30 days. Reports and their answers are deleted after 30 days. Every hour the server also counts, from the reports it already holds, how often camera glasses were reported in each area of about 150 m over the last 14 days, and by how many people. Those counts hold no install ID or device group. Looking at reports nearby sends only the map squares around you, each about 5 km across, and no install ID. Asking for busy areas, for the warning or for the map, sends the same map squares and nothing else. If you turn on alerts from people nearby, the app gets a token from Firebase Cloud Messaging and sends it to the ZuckOff server with your location rounded to about 100 m and your reach, again when you reach a new area and at least every 12 hours. Turning the switch off deletes that registration, and one not refreshed for 30 days is deleted anyway. With Allow all the time, Google Play services tells the app when you move a long way, when you walk into a reported area, and, with Warn me in busy areas on, when you walk into a busy area. ZuckOff keeps no record of where you have been, with one exception. While Warn me in busy areas is on, the app remembers on your device the busy areas it warned you about in the last day, so that each one warns you once a day at most, and turning the switch off forgets them.
The map of reports, part of Pro, is drawn from OpenFreeMap map tiles, so OpenFreeMap receives your network address and the map area you look at, as any map website would. ZuckOff sends it nothing else.
Alerts about glasses your own phone heard are generated on your device, so their content never reaches Google or anyone else. Alerts from people nearby are different: once you turn them on, the ZuckOff server sends them through Firebase Cloud Messaging, Google's push service. Such a message carries the report's rounded location, whether a scanner heard the glasses and, if one did, the product name, and nothing about you. The app turns it into a notification on your phone.
ZuckOff Pro is billed through Google Play. The purchase happens inside Google's own billing flow, so the app never sees your payment details. It only asks Google Play whether a subscription is currently active and stores that yes or no on the device. Google's handling of the transaction is covered by Google's privacy policy.
The controller of the personal data described in this policy is Paweł Szydłowski, the developer of ZuckOff. For anything about your data, including the requests below, write to: pawels.apps@gmail.com
We do not sell or share personal data. These providers handle it as part of the service, each only for the part named. Cloudflare runs this website and the ZuckOff server and its database, and protects both from abuse. Apple delivers push notifications and draws maps on iPhone and Mac. Google delivers push notifications through Firebase Cloud Messaging and provides location services on Android. OpenFreeMap serves the map tiles on Android. Tally hosts the newsletter form and its list. Some of these providers process data outside the European Economic Area, including in the United States. Where they do, they rely on the EU-US Data Privacy Framework or the European Commission's standard contractual clauses.
Under the GDPR you can ask for a copy of your personal data, ask for it to be corrected or deleted, ask for its use to be restricted, or ask to receive it in a portable form, and you can object to any use based on our legitimate interest. ZuckOff never asks who you are, so what reaches the server, such as a push token, a rounded location or a hashed install ID, does not name you. It still counts as personal data under the GDPR, and these rights apply to it. We answer within one month. ZuckOff makes no automated decisions about you.
Turning off alerts from people nearby deletes your registration at once. To have the reports and answers your phone sent deleted before the usual 30 days, email us the install ID or report ID shown on the report sheet. Without one of them we cannot tell which records are yours. Sending the install ID also deletes the server's note of when it first and last heard from that install.
You can also complain to a data protection authority. In Poland that is the President of the Personal Data Protection Office (UODO), ul. Stawki 2, 00-193 Warszawa, uodo.gov.pl.
zuckoff.app is served by Cloudflare, which processes each visitor's network address and request details to deliver the pages and protect them from abuse, including a script that checks for bots and reports of pages that failed to load. The site has no analytics, no advertising and no cookies of its own. If you dismiss the banner, close the shop popup or choose a language, your browser remembers that in its own storage, and nothing is sent anywhere.
The newsletter form is provided by Tally and loads only when you scroll to it. If you sign up, Tally stores your email address, and it is used only to tell you when a new version ships or the detection list grows. It is kept until you unsubscribe, through the link in every email or by writing to us, and then deleted.
ZuckOff is not directed at children and collects no personal information from anyone, regardless of age.
If this policy changes, the updated version will be posted on this page with a new date.
Questions about privacy or anything else: pawels.apps@gmail.com
ZuckOff is an independent app and is not affiliated with Meta Platforms, Luxottica, Ray-Ban, Oakley or Snap.