Privacy Policy
Last updated: April 27, 2026
In short: Your scan history, notes, prices, and any data tied to physical spools stay on your device. The App also collects anonymous, aggregated usage counters (e.g. how many scans, how often features are used) and uploads them to the developer's server about once a day so the developer can see which features are popular. No personal information, scan contents, or NFC tag data is ever uploaded. You can turn the upload off in Settings; local statistics still work for your own “Your stats” page.
Overview
Spool Scanner (“the App”) is a filament spool NFC tag reader and inventory tool for 3D printing. This privacy policy explains how the App handles your data.
What Stays on Your Device
The App stores the following data only on your device:
- Scan history: brand, material type, color, weight, diameter, temperatures, optional notes, optional price, archive state, and an app-generated per-spool identifier for each scanned or written filament spool.
- App settings: theme preference, clipboard / export field selections, scan-behavior preferences, brand picker selections, and other preferences you configure.
- Backup file: an automatic backup copy of your scan history, stored in the App's private data directory.
This data never leaves your device unless you explicitly choose to export it (JSON or CSV) or share an exported file using Android's share functionality.
Anonymous Usage Data (Opt-Out)
To help the developer understand which features are used and which need work, the App collects anonymous, aggregated counters and uploads them to the developer's server about once every 24 hours. This is on by default. You can turn it off at any time in Settings → Anonymous usage → “Share anonymous usage with the developer”.
What is uploaded
- Feature counters. How many times features are used in aggregate — for example: number of scans (Bambu / NDEF / unrecognized), number of tag writes (success / failed / too small), number of “Update usage” confirmations, number of history edits, number of upsell screens shown vs. purchases. These are simple incrementing integers — they do not include what was scanned, written, or edited.
- Anonymous device key. A random identifier (UUID-style GUID) generated on first upload. It is not derived from your phone's hardware identifiers, your account, your IP address, or anything else that identifies you. Its only purpose is to let the server replace your previous upload with your latest one (so the same device is not double-counted in totals). When you turn off sharing, this key is deleted; if you turn it back on later, a new random key is generated, with no link to the previous one.
- App version, schema version, platform name (e.g.
"Android").
- User-typed brand names that are not in the App's catalog (e.g. if you type “MyLocal3DShop” as a brand name, the lowercased text is uploaded as a counter so the developer can see which brands to consider adding). Names are sanitized (lowercased, length-capped, single-character entries dropped) and uploaded as counts of typed strings — not associated with any other data point. If you do not want this, turn off sharing.
- Names of catalog brands a free user typed without unlocking. Same shape as above — used to gauge which brands free users most want access to.
- Last upload timestamp.
What is NOT uploaded
- Scan history contents (materials, colors, weights, prices, notes)
- NFC tag data (UIDs, payloads, MIFARE bytes)
- Photos taken with the label-scan camera (these are processed entirely on-device by Google ML Kit and never uploaded by this App)
- Location data
- Personal information (name, email, phone, address)
- Device fingerprinting (advertising ID, hardware identifiers)
- Crash reports or stack traces
Where it goes
Uploads are sent to a Cloudflare Workers endpoint operated by the developer (spoolscan-telemetry.spoolscan.workers.dev). Cloudflare receives the request as part of its content-delivery infrastructure but the developer's Worker code does not log your IP address and does not persist any HTTP request metadata beyond the anonymous payload itself. Data is stored in a Cloudflare D1 database keyed by the anonymous device key described above. Each upload replaces the previous record for that device key, so totals do not double-count.
Your control
- Turn it off at any time: Settings → Anonymous usage → uncheck “Share anonymous usage with the developer.” Turning it off deletes the anonymous device key and stops further uploads.
- See exactly what would be uploaded: Settings → Anonymous usage → “👁 View collected data” displays the live JSON snapshot — you can verify the contents, not just trust this policy.
- Reset: Settings → Anonymous usage → “✕ Reset” clears all counters back to zero.
- Manual flush: Settings → Anonymous usage → “↑ Send now” forces an immediate upload.
Local feature counters that power the in-app “Your stats” page (Settings → Anonymous usage → “📈 Your stats”) are computed entirely on-device from your scan history and continue to work whether sharing is on or off.
NFC Usage
The App uses your device's NFC (Near Field Communication) hardware to read and, optionally, to write filament spool tags. The App:
- Only accesses NFC when you initiate a scan or a write — never in the background.
- Reads two kinds of tags:
- Bambu Lab filament spool RFID tags (encrypted MIFARE Classic format).
- NDEF tags (e.g. NTAG213 / NTAG215 / NTAG216) previously written by this App or another compatible tool.
- Writes, only when you explicitly tap the “Write tag” button, to blank or rewritable NDEF tags. The data written consists solely of the filament details you have entered in the App (brand, material, color, weight, diameter, temperatures, optional notes, and an app-generated per-spool identifier). Bambu Lab tags are never written to or modified.
- Does not transmit any NFC tag data, UIDs, or payload contents to any server — all NFC interaction is purely between your phone and the tag in front of it.
In-App Purchase
The App offers an optional one-time “Pro” upgrade. Billing is handled entirely by Google Play. The App receives a flag from Google Play indicating whether the upgrade has been purchased; it does not see your payment information, billing address, or Google account details. Refer to Google Play's privacy policy for how Google handles billing data.
Android Backup
If you have Google backup enabled on your device, the App's scan history may be included in your device backup per Android's standard backup mechanism. This is controlled by your device settings, not by the App.
Third-Party Services
- Google Play Billing — handles the optional Pro purchase. See above.
- Google ML Kit (on-device) — used for label OCR and barcode scanning when you take a photo of a filament spool's label. Processing happens entirely on your device; no images or extracted text are sent to Google or any other server by the App.
- Google Play Services NFC — used to read and write NFC tags. Local hardware access only.
- Cloudflare Workers + D1 — the developer's anonymous-usage upload endpoint, described above. Only triggered when you have sharing turned on.
The App does not use advertising networks, third-party analytics SDKs (Firebase Analytics, Google Analytics, etc.), social-media tracking SDKs, or behavioral advertising of any kind.
Data Sharing
The App does not sell, rent, or share your personal data with any third parties. The anonymous-usage uploads described above are processed only by the developer to inform App development and are not shared with advertisers or data brokers.
You can manually export your scan history as JSON or CSV files using the in-app export function. Any sharing of exported files is initiated and controlled entirely by you.
Deleting Your Data
Spool Scanner is built so you control your own data. Here is how to delete it.
Delete data stored on your device
Everything tied to your spools (scan history, notes, prices, settings, backup file) is stored only on your device. To remove it:
- Delete a single spool: open the History tab, tap a row to open the detail popup, tap “Delete.”
- Delete all scan history: Settings → scroll to the bottom → “Delete all history.” This wipes the main history file and the auto-backup file.
- Delete everything (history, settings, anonymous-usage counters, device key): uninstall the App in Android Settings → Apps → Spool Scanner → Uninstall. This is the most thorough option — it removes the App's private data directory and all preferences.
- Reset only the anonymous-usage counters (without uninstalling): Settings → Anonymous usage → “✕ Reset.”
Delete the anonymous record on the developer's server
If you have ever had “Share anonymous usage with the developer” turned on, an anonymous row keyed by your random device key may exist in the developer's Cloudflare D1 database. The row contains only the data described in “What is uploaded” above — no personal information.
Two ways to remove it:
- Self-service. Open Settings → Anonymous usage → uncheck “Share anonymous usage with the developer.” This stops further uploads and deletes the anonymous device key on your device. The existing server row will become orphaned (no further updates) and is purged in routine database cleanup.
- Direct deletion request. If you would like the existing server row removed immediately, email sveinungsvea@gmail.com with the subject line “Delete my Spool Scanner data.” Optionally include your anonymous device key (Settings → Anonymous usage → “👁 View collected data” → copy the
deviceKey value) so the row can be located precisely. Without the key the row cannot be located, since there is nothing else in the upload that identifies you. The developer will delete the matching row within 30 days and reply to confirm.
Once your local device key is regenerated (after opting out and back in, or after uninstalling), past uploads can no longer be re-associated with you.
What about the in-app Pro purchase?
The Pro purchase record is held by Google Play, not by the App or its developer. To request deletion or refund, use Google Play’s account-data tools or contact Google Play support directly.
Children's Privacy
The App is not directed at children under 13 and does not knowingly collect data from children.
Changes to This Policy
We may update this privacy policy from time to time. Any changes will be reflected in the “Last updated” date above.
April 27, 2026 — Added the “Anonymous Usage Data” section documenting the opt-out feature-counter upload introduced in app version 1.3 (build 65). Added a “Deleting Your Data” section with self-service and direct-deletion-request paths. Added a one-time-purchase section. Updated “Third-Party Services” to list Cloudflare Workers, Google ML Kit, and Google Play Billing.
April 18, 2026 — NFC Usage section expanded to describe write support for blank / rewritable NDEF tags.
Contact
If you have questions about this privacy policy, please contact:
Email: sveinungsvea@gmail.com